본문 바로가기

programmers 알고리즘/구현

(10)
42627번: 디스크컨트롤러 (힙) programmers.co.kr/learn/courses/30/lessons/42627/solution_groups?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(jobs): answer = 0 time = 0 # 현재까지 진행된 작업 시간 length = len(jobs) jobs = sorted(jobs, key=lambda x: x[1]) # 소요시간 우선 정렬 while len(jobs) != 0: for i in range(len(jobs)): if jobs[i][0]
42626번: 더 맵게 (힙) programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr import heapq def solution(scoville, K): queue = [] [heapq.heappush(queue, x) for x in scoville] cnt = 0 while True: f = heapq.heappop(queue) s = heapq.heappop(queue) heapq.heappush(queue, f + (s * 2)) cnt..
42587번: 프린터 programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr from collections import deque def solution(priorities, location): # queue: [(2, 0), (1, 1), (3, 2), (2, 3)] queue = deque((p, i) for i, p in enumerate(priorities)) print(queue) cnt = 0 while queue: cp, ci = queue...
42583번: 다리를 지나는 트럭 programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이 programmers.co.kr def solution(bridge_length, weight, truck_weights): # time 1 => bridges [0, 7] # time 2 => bridges [7, 0] # time 3 => bridges [0, 4] # time 4 => bridges [4, 5] # time 5 => bridges [5, 0] # time 6 => bri..
기능개발 (스택/큐) programmers.co.kr/learn/courses/30/lessons/42586?language=python3 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr import math def solution(progresses, speeds): # d (dev) : 7, 3, 9 # Q (deploy, cnt) : [[7, 2], [9, 1]] Q = [] for p, s in zip(progresses, speeds): d = math.ceil((100 - p) / s) if len(Q) == 0..
주식가격 (스택/큐) programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr def solution(prices): N = len(prices) ans = [0] * N for i in range(N - 1): for j in range(i + 1, N): ans[i] += 1 if prices[i] > prices[j]: break return ans res = solution([1, 2, 3, 2, 3]) ..
베스트앨범 (해시) programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr def solution(genres, plays): # D: {'classic': [(500, 0), (150, 2), (800, 3)], 'pop': [(600, 1), (2500, 4)]} D = {g: [] for g in set(genres)} N = len(genres) for g, p, i in zip(genres, plays, range(N)): D[g].app..
위장 (해시) programmers.co.kr/learn/courses/30/lessons/42578?language=python3 코딩테스트 연습 - 위장 programmers.co.kr def solution(clothes): # D: {'headgear': ['yellow_hat', 'green_turban'], 'eyewear': ['blue_sunglasses']} D = {} for name, kind in clothes: if kind not in D: D[kind] = [name] else: D[kind].append(name) # cnt: 3 * 2 - 1 cnt = 1 for k in D: cnt *= len(D[k]) + 1 return cnt - 1 res = solution([["yellow_h..