목록Python/이코테 (25)
가오리의 코딩일기
POINT - 원소(X)의 값은 공포도의 값이자 모험가 1명임을 의미한다 - 내림차순이 아닌 오름차순을 사용한다 - 2 3 1 2 2 → 1 2 2 2 3 → 1 / 2 2 / 2 3 : 여기서 2 3은 불가능 → 3이 있기 때문에 3이하인 숫자가 하나 더 필요 n = int(input()) x = list(map(int, input().split())) x.sort() # 오름차순 정리, 내림차순 불가능 group = 0 # 나눌 그룹의 수 member = 0 # 각 그룹의 사람 수 for i in x: member += 1 # 현재 그룹에 사람 추가 if member >= i: # 현재 그룹에 포함된 모험가 수가 현재 공포도보다 크거나 같으면 group += 1 # 그룹 생성 member = 0 # ..
POINT - n을 k로 나누어지지 않으면 1을 뺀다 n, k = map(int, input().split()) count = 0 while n >= k: if n % k == 0: n = n/k count += 1 else: n -= 1 count += 1 print(count) n, k = map(int, input().split()) result = 0 while n >= k: while n % k == 0: n -= 1 result += 1 n //= k result += 1 while n > 1: n -= 1 result += 1 print(result) n, k = map(int, input().split()) result = 0 while True: target = (n//k) * k res..
POINT - 각 줄에서 가장 작은 수를 뽑아서 뽑은 작은 수 중 가장 큰 수를 뽑는다 n, m = map(int, input().split()) result = 0 for i in range(n): nlist = list(map(int, input().split())) num_m = min(nlist) result = max(result, num_m) print(result) n, m = map(int, input().split()) result = 0 for i in range(n): data = list(map(int, input().split())) min_value = 10001 for a in data: min_value = min(min_value, a) result = max(result,..
POINT - sort() : 오름차순 정렬 → first = numbers[n-1], second = numbers[n-2] - sort(reverse = True) : 내림차순 정렬 → first = numbers[0], second = numbers[1] - 가장 큰 수를 k번 더하고 두 번째로 큰 수를 1번 더하고 가장 큰 수를 k번 더하기를 반복 # 방법1 -> 내생각1 sort() 사용 n, m, k = map(int, input().split()) numbers = list(map(int, input().split())) numbers.sort() result = 0 while True: for i in range(k): if m == 0: break result += numbers[n-1]..
그리디 알고리즘 → 매 순간 가장 좋아 보이는 것을 선택하고 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다 → '가장 큰/작은' 순서대로 같은 기준을 제시해줌 coin = int(input()) # 문제에선 1260원이라고 주어짐 money = [500, 100, 50, 10] count = 0 # 거슬러줄 동전의 수 for c in money: count += coin//c coin %= c # print(str(c)+"원", count) print(count)