그리디알고리즘
-
알고리즘: 백준 10610번 30 (feat. Python)알고리즘/백준(BaekJoon) 2020. 8. 8. 17:55
백준 10610번 링크입니다. https://www.acmicpc.net/problem/10610 10610번: 30 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶� www.acmicpc.net 30의 배수가 되기 위한 조건은 어떤수 N이 10의 배수이고 3의 배수인 경우이다. N이 10의 배수가 되기 위한 조건 = N안에 0이 포함되어 있으면 성립 N이 3의 배수가 되기 위한 조건 = N의 모든 자리수를 더했을 때 3의 배수이면 성립 이 두 조건만 성립하면 최대값은 N을 그냥 그대로 내림차순 정렬한 값이다. import sys input = sys.std..
-
알고리즘: 백준 11047번 동전0 (feat.Python)알고리즘/백준(BaekJoon) 2020. 8. 8. 15:27
4200원을 만드는데 필요한 동전의 갯수가 최소가 되게하기 위해선 가장 큰 동전으로 나누어 나가면 된다. 4200원 다음으로 가장 동전은 1000원이므로 4200 // 1000 = 4 ... 200 200 //100 = 2 ... 0 이므로 4 + 2 = 6이다. import sys input = sys.stdin.readline n, k = map(int, input().split()) money_list = [] for i in range(n): money_list.append(int(input())) change_count = 0 for i in range(n - 1, - 1, -1): if k == 0: break tmp = (k // money_list[i]) change_count += tmp..
-
알고리즘: 백준 11399번 ATM (feat. Python)알고리즘/백준(BaekJoon) 2020. 8. 8. 15:19
3 1 4 3 2을 입력으로 받을 때 돈을 인출하는데 걸리는 시간의 합은 3 x 5 + 1 x 4 + 4 x 3 + 3 x 2 + 1 x 1 입니다. 직관적으로 3 1 3 4 2를 오름차순으로 배열해서 각각 5부터 1까지 곱한다면 돈을 인출하는데 걸리는 시간이 최소가 됨을 알 수 있습니다. import sys input = sys.stdin.readline n = int(input()) get_time = list(map(int, input().split())) total = 0 get_time.sort() for i in range(n): total += (n - i) * get_time[i] print(total) 5 3 1 4 3 2 32 Process finished with exit code 0