Python(41)
-
[프로그래머스] 디스크 컨트롤러
# 문제 설명 하드디스크 컨트롤러를 구현하려고 한다. 하드디스크는 한 번에 하나의 작업만 수행할 수 있고, 각 작업의 요청시각부터 종료까지 걸린 시간의 평균이 최소가 되도록 할 때, 평균이 얼마가 되는지 반환해라. 단, 소수점 이하의 자리수는 버린다. # 입출력 예시 입력 출력 [[0, 3], [1, 9], [2, 6]] 9 작업 요청시점, 작업의 소요시간 쌍이 입력으로 주어진다. # 코드 풀이 from heapq import heapify, heappush, heappop def solution(jobs): answer = 0 n = len(jobs) heapify(jobs) # (요청시간, 작업시간) 순 정렬 t = 0 # 지난 시간 q = [] # (작업시간, 요청시간) while jobs or q..
2022.02.18 -
[프로그래머스] 더 맵게
# 문제 설명 모든 음식의 스코빌 지수를 K 이상으로 만들려고 한다. 이를 위해 스코빌 지수가 가장 낮은 두 개의 음식을 다음과 같은 방법으로 섞어서 새로운 음식을 만든다. 섞은 음식 스코빌 지수 = 가장 안매운 음식 스코빌 지수 + (2 * 두 번째로 안매운 음식 스코빌 지수) 이를 모든 음식이 K이상의 스코빌 지수를 가질 때까지 반복한다. 만약 모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우에는 -1을 반환한다. # 입출력 예시 입력 출력 scoville = [1,2,3,9,10,12] K = 7 2 # 코드 풀이 from heapq import heapify, heappush, heappop def solution(scoville, K): answer = 0 heapify(scoville..
2022.02.17 -
[리트코드] 743. Network Delay Time
# 문제 설명 1부터 n까지의 라벨링된 n개의 노드들의 네트워크가 주어지고, u노드에서 v노드로 가는 데 w만큼의 시간이 걸린다는 여행 시간들의 리스트 times[i] = (u_i, v_i, w_i)가 주어진다. 우리가 k라는 노드부터 신호를 보내면, 모든 n개의 노드가 그 신호를 받을 시간을 반환해라. 만약 모든 n개의 노드들이 그 신호를 받는 게 불가능하다면, -1을 반환한다. # 입출력 예시 입력 출력 times = [[2,1,1],[2,3,1],[3,4,1]] n = 4 k = 2 2 times = [[1,2,1]] n = 2 k = 1 1 times = [[1,2,1]] n = 2 k = 2 -1 # 코드 풀이 class Solution: def networkDelayTime(self, time..
2022.02.14 -
[프로그래머스] 가장 큰 수
# 문제 설명 0이상의 양의 정수로 이뤄진 배열이 주어졌을 때, 정수를 이어붙여 만들 수 있는 수 중에서 가장 큰 수를 반환해라. 단, 원소로 0이 주어질 수도 있다. # 입출력 예시 입력 출력 [6, 10, 2] 6210 [3, 30, 34, 5, 9] 9534330 # 코드 풀이 def solution(numbers): # 3자리수와 비교할 때, 제대로 대소관계를 파악하려고 snums = sorted(list(map(str, numbers)), reverse=True, key=lambda x: x*3) return str(int("".join(snums))) # 핵심 포인트 Python의 str-list정렬은 첫 문자부터 차례로 오름차순 & len이 큰 것 먼저 정렬된다. 정렬대상들은 그대로 두고, ..
2022.02.07 -
[프로그래머스] 베스트앨범
# 문제 설명 장르 별로 가장 많이 재생된 노래를 2개씩 모아 베스트 앨범을 출시하려고 한다. 노래는 고유번호로 구분하며, 수록 기준은 다음과 같다. 장르 별로 속한 노래들의 재생 수가 많은 순으로 먼저 수록한다. 장르 내에서 많이 재생된 노래를 먼저 수록한다. 재생 횟수가 같다면, 고유 번호가 낮은 노래를 먼저 수록한다. 단, 장르에 속한 곡이 하나라면 한 곡만 선택하고, 모든 장르는 재생된 횟수가 다르다. # 입출력 예시 입력 출력 genres = ["classic", "pop", "classic", "classic", "pop"] plays = [500, 600, 150, 800, 2500] [4, 1, 3, 0] # 코드 풀이 from collections import defaultdict def..
2022.02.07 -
[리트코드] 17. Letter Combinations of a Phone Number
# 문제 설명 2~9까지의 수가 주어질 때, 나타날 수 있는 모든 가능한 문자 조합들을 반환해라. 단, 1은 주어지지 않는다. # 입출력 예시 입력 출력 "23" ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"] "" [] "2" ["a", "b", "c"] # 코드 풀이 1. key가 int인 경우 class Solution: def letterCombinations(self, digits: str) -> List[str]: ltr = {2:'abc', 3:'def', 4:'ghi', 5:'jkl', 6:'mno', 7:'pqrs', 8:'tuv', 9:'wxyz'} answer = [] def select(i, path): if len(path) >= ..
2022.02.01