[Python]알고리즘/이코테 2021

[Python]알고리즘/이코테 2021

[그리디 알고리즘] 문제1 - 1이 될 때까지

1이 될 때까지 1) 문제 해결 아이디어 N에 대해 최대한 많이 나누기(2번 연산)을 수행 N의 값을 줄 일 때, 2 이상의 수로 나누는 작업이 1을 빼는 작업보다 수를 훨씬 많이 줄일 수 있음 2) 정당성 분석 Q. 가능하면 최대한 많이 나누는 작업이 최적의 해를 항상 보장할 수 있는가? K가 2 이상이면 K로 나누는 것이 1을 빼는 것보다 항상 N을 빠르게 줄일 수 있음 3) 소스코드 n, k = map(int, input().split()) count = 0 # 최소 횟수 while True: # 탈출 조건 if(n == 1): break # n이 k로 나누어 떨어지면 나누기 if(n % k == 0): n /= k # n이 k로 나누어 떨어지지 않으면 빼기 else: n -= 1 count += ..

[Python]알고리즘/이코테 2021

[그리디 알고리즘] 예시 문제 - 거스름 돈

거스름 돈 1) 해결 아이디어 최적의 해: 가장 큰 화폐 단위부터 돈을 거슬러 주기 (500->100->50->10) 2) 정당성 분석 Q. 가장 큰 화폐 단위부터 돈을 거슬러 주는 것이 최적의 해를 보장하는 이유는? 동전의 큰 단위가 항상 작은 단위의 배수이므로 작은 단위의 동전들을 종합해 최적의 해가 나올 수 없기 때문 if) 화폐 단위 500, 400, 100원으로 800원을 거슬러 줘야 한다면? 그리디 해: 500 * 1 + 100 * 3 => 4개 최적의 해: 400 * 2 => 2개 3) 소스코드 n = 1260 count = 0 # 동전 개수 # 큰 단위부터 확인 coinList = [500, 100, 50, 10] for coin in coinList: count += n // coin #..

HSY_mumu
'[Python]알고리즘/이코테 2021' 카테고리의 글 목록 (5 Page)