알고리즘/프로그래머스
-
[힙(Heap)] 디스크 컨트롤러알고리즘/프로그래머스 2021. 10. 3. 15:47
https://programmers.co.kr/learn/courses/30/lessons/42627?language=python3# 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr - 풀이 * 해당 시점마다 가장 소요시간이 작은 작업을 우선적으로 선택 heapq 사용() 1. jobs를 작업이 요청되는 시점기준으로 정렬 >> jobs = [[0, 3], [1, 9], [2, 6]] 2. 만약 해당 sec이하에 요청된 작업들이 있으면, jobs에서 pop해서 queue에 (소요시간, 요청된 시점)의 딕셔..
-
[스택/큐] 다리를 지나는 트럭 / 프린터알고리즘/프로그래머스 2021. 10. 3. 14:07
https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr - 문제의 상황을 코드로 잘 표현하면, 해결가능하다. def solution(bridge_length, weight, truck_weights): time = 0 queue = [0] * bridge_length #다리길이 만큼의 queue, 비어있으면 0 while queue: time += 1 queue.pop(0) #다리 맨앞을 ..
-
[힙(Heap)] 더 맵게알고리즘/프로그래머스 2021. 10. 2. 20:40
https://programmers.co.kr/learn/courses/30/lessons/42626?language=python3# 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr heapq 를 사용하면 쉽게 해결가능하다. import heapq def solution(scoville, K): answer = 0 heapq.heapify(scoville) while scoville: if scoville[0] < K: answer += 1 if len(scoville)==1: return -1 ..
-
[위클리 챌린지] 8주차알고리즘/프로그래머스 2021. 9. 27. 19:52
https://programmers.co.kr/learn/courses/30/lessons/86491?language=python3 코딩테스트 연습 - 8주차 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr 프로그래머스 위클리챌린지 8주차 최소직사각형 def solution(sizes): t1, t2 = [], [] for s in sizes: if s[0] > s[1]: t1.append(s[0]) t2.append(s[1]) else: t2.append(s[0]) t1.append(s[1]) return max(t1)*max(t2)
-
[위클리 챌린지] 7주차알고리즘/프로그래머스 2021. 9. 17. 20:43
https://programmers.co.kr/learn/courses/30/lessons/86048 코딩테스트 연습 - 7주차 사회적 거리두기를 위해 회의실에 출입할 때 명부에 이름을 적어야 합니다. 입실과 퇴실이 동시에 이뤄지는 경우는 없으며, 입실 시각과 퇴실 시각은 따로 기록하지 않습니다. 오늘 회의실에는 programmers.co.kr - 풀이 1. 현재 입실한 인원이 누구인지를 담는 now_in리스트와 Key가 번호, Value가 각 번호와 만났는지를 체크하는 리스트인 meet딕셔너리를 사용한다. 2. meet딕셔너리를 {번호, [0, 0, 0, ... ,0]} 의 형태로 초기화한다. 3. 만약 enter = [1, 3, 2] 이고, leave = [1, 2, 3] 일 경우... meet딕셔너..
-
[완전탐색] 모의고사 / 소수 찾기 / 카펫알고리즘/프로그래머스 2021. 9. 15. 20:44
https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr def solution(answers): case1, case2, case3 = [1,2,3,4,5], [2,1,2,3,2,4,2,5], [3,3,1,1,2,2,4,4,5,5] s = [0, 0, 0] for i in range(len(answers)): if case1[i%5] == answers[i]: s[0] += 1 if case2[i%8] == answ..
-
[스택/큐] 기능개발 / 주식가격알고리즘/프로그래머스 2021. 9. 12. 17:08
https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr import math def solution(progresses, speeds): answer = [] arr = [] for i in range(len(progresses)): arr.append(math.ceil((100 - progresses[i])/speeds[i])) temp, cnt = arr[0], 0 for i in arr: if temp ..
-
[위클리 챌린지] 6주차알고리즘/프로그래머스 2021. 9. 11. 19:29
https://programmers.co.kr/learn/courses/30/lessons/85002 코딩테스트 연습 - 6주차 복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요 programmers.co.kr - 풀이 정렬 기준 데이터에 대한 리스트를 만들어서 다중정렬을 이용해 조건에 맞게 정렬해주면 된다. def solution(weights, head2head): answer = [] data = [] for h in range(len(head2head)): w_win, win, lose = 0, 0, 0 for i in range..