본문 바로가기

전체 글43

[백준 1789번] - 수들의 합 [문제] 서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까? [입력] 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. [출력] 첫째 줄에 자연수 N의 최댓값을 출력한다. [예제 입력] 200 [예제 출력] 19 [내가 생각한 방법] 서로 다른 N개의 자연수 합이 S라고 할 때, 자연수 N이 최대값이 되려면 1부터 1씩 증가하는 등비수열이 성립해야 N의 값이 최대값이 된다고 생각했다. 따라서, 등비수열의 합인 항의 개수*(첫번째 항 + 마지막 항) / 2 식을 활용해서 아래와 같이 풀었다. [아쉬운 점] 마지막 출력을 N-1 말고 N으로 하고 싶은데 ,,, 일단 생각이 안나서 킵 ... 다음에 디벨롭 해보자 S = int(input()) .. 2023. 2. 8.
[백준 11047번 - 동전0] 문제풀이 - Python3 N, K = map(int, input().split()) coins = [int(input()) for _ in range(N)] coins.sort(reverse = True) value = 0 result = 0 # 4200이 거슬러줘야 할 값이라고 가정 for coin in coins: value = (K // coin)*coin # 4000 result += K // coin # 4만큼 더해줌 K -= value # 원래 값 - 동전의 배수 값 = 200 if K == 0: break print(result) 2023. 1. 25.
[백준 11399번 - ATM] 문제 풀이 (Python3) n = int(input()) times = list(map(int, input().split())) result = 0 times.sort() for i in range(len(times)): result += times[i]*n n -= 1 print(result) 2023. 1. 24.
[백준 2720번 - 세탁소 사장 동혁] 문제 풀이 (Python3) coins = [25, 10, 5, 1] result = [0, 0, 0, 0] t = int(input()) c = list() for _ in range(t): c.append(int(input())) for i in c: while True: for idx, coin in enumerate(coins): result[idx] = i // coin i = i % coin if i == 0: print(' '.join(map(str,result))) break 2023. 1. 24.