본문 바로가기

Algorithm 💡/Greedy22

[이코테] 무지의 먹방 라이브 이번 문제는 단순하게 주어진 k 시간만큼 모든 음식들을 접근하여 다음 인덱스를 찾게 되면 정확성 및 효율성으로 인해 틀리게 되는 문제이다. 따라서 소요 시간이 적게 걸리는 음식부터 하나씩 먹어 치운 후에, 주어진 k 시간에서 남은 시간동안 가장 적게 시간이 걸리는 음식을 먹지 못할 때 그 나머지 값을 인덱스로 리턴하면 풀리게 되는 문제이다. 이 문제의 핵심은 모든 음식을 소요 시간을 기준으로 정렬한 뒤에, 시간이 적게 걸리는 음식부터 제거해 나가는 것이다. 이 문제를 접근하기 위해 내게 부족했던 파이썬 문법들은 다음과 같다. '음식을 먹는게 소요되는 시간'과 '인덱스'를 동시에 저장하기 위해서 Tuple 자료형을 사용할 수 있다는 점 sorted나 .sort로 정렬할 때 두번째 인자로 key 값을 부여하.. 2023. 2. 5.
[이코테] 볼링공 고르기 1. 본인 코드 n, m = map(int,input().split()) weight = list(map(int,input().split())) weight.sort() count = 0 # 리스트 집합화(원소의 값만 추출하기 위함) weight_set = set(weight) weight_value = list(weight_set) for i in weight_value: tempList = [j for j in weight if j > i] # 현재 i 값보다 큰 무게를 가진 공들만 추출(리스트 컴프리헨션 사용) count += (weight.count(i) * len(tempList)) # (현재 i 개수) * (무게가 더 큰 공 개수) = 조합의 개수 print(count) # 소요시간 : 0.0.. 2023. 2. 2.
[이코테] 만들 수 없는 금액 1. 본인 풀이 n = int(input()) data = list(map(int,input().split())) data.sort(reverse=True) # 동전의 금액을 내림차순으로 정렬 result = 1 # 결과(답)은 1부터 시작 while result 2023. 2. 2.
[이코테] 큰 수의 법칙 1. 교재 답안 # 교재 답안 # N, M, K를 공백으로 구분하여 입력받기 n,m,k = map(int,input().split()) # N개의 수를 공백으로 구분하여 입력받기 data = list(map(int,input().split())) total = 0 data.sort(reverse=True) count = int(m/(k+1))*k count += m%(k+1) total += count*data[0] total += (m-count)*data[1] print(total) 2. 본인의 답안 # 본인 풀이 n, m, k = map(int,input().split()) arr = list(map(int,input().split())) arr.sort(reverse=True) a = m // (.. 2023. 1. 29.