본문 바로가기

고득점 Kit11

[프로그래머스] 고득점Kit (4) - 정렬 (파이썬) 1. K번째수 (Lv. 1) # K번째수 def solution(array, commands): answer = [] for start, end, k in commands: sliced = array[start-1:end] sliced.sort() answer.append(sliced[k-1]) return answer 문제 그대로 슬라이싱 하고 정렬을 해준 다음 k번째 수를 answer에 append 2. 가장 큰 수 (Lv. 2) # 가장 큰 수 def solution(numbers): numbers = list(map(str, numbers)) numbers.sort(key=lambda x: x*3) numbers.reverse() answer = int(''.join(numbers)) return.. 2022. 3. 4.
[프로그래머스] 고득점Kit (3) - 힙 (파이썬) 1. 더 맵게 (Lv. 2) # 더 맵게 import heapq def solution(scoville, K): answer = 0 heapq.heapify(scoville) while scoville[0] = 2: new = heapq.heappop(scoville) + (heapq.heappop(scoville)*2) heapq.heappush(scoville, new) answer += 1 else: answer = -1 break return answer scoville리스트를 heapq로 만들어준다. (heapq.hepify) 가장 작은 값(scoville[0])이 K보다 작으면 두 재료를 섞어서 새로운 스코빌 지수를 가진 재료를 scoville에 넣어 .. 2022. 3. 2.
[프로그래머스] 고득점Kit (2) - 스택/큐 (파이썬) 1. 기능 개발 (Lv. 2) # 기능개발 def solution(progresses, speeds): days = [] for program, speed in zip(progresses, speeds): temp = (100-program) % speed days.append((100-program)//speed + 1 if temp else (100-program)//speed) answer = [] count = 1 start = days[0] for i, x in enumerate(days): if i+1 = days[i+1]: count += 1 else: answer.append(count) if i + 1 < len(days): start = days.. 2022. 3. 1.
[프로그래머스] 고득점Kit (1) - 해시 (파이썬) 1. 완주하지 못한 선수 (Lv. 1) # 완주하지 못한 선수 def solution(participant, completion): info = {} for i in participant: if info.get(i): info[i] += 1 else: info[i] = 1 for i in completion: info[i] -= 1 answer = '' for i, num in info.items(): if num != 0: answer = i break return answer 동명이인이 있기 때문에 {참가자 이름 : 이름 숫자} 쌍의 info선언 완주한 사람들의 숫자를 한명씩 줄인다. 남은 info에서 숫자가 0이 아는 이름이 완주를 하지 못한 사람의 이름이다. 2. 전화번호 목록 (Lv. 2) # .. 2022. 2. 20.