반응형

Algorithm/프로그래머스 42

[프로그래머스/Python] 체육복 - Level1

https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr def solution(n, lost, reserve): student = [0] * (n+2) answer = 0 # 여분 체육복 있는 사람은 값 1로 만들기 for r in reserve: student[r] += 1 # 체육복을 안가지고 온 사람은 값 -1로 만들기 for l in lost: student[l] -= 1 # 체육복을 입을 수 있는 사람의 최댓..

[프로그래머스/Python] 이중우선순위큐 - Level3

https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr import heapq def solution(operations): heap = [] for operation in operations: o = operation.split(' ') # 명령어 값 분리하여 저장 # 명령어에 따라 처리하는 부분 if o[0] == 'I': heapq.heappush(heap, int(o[1])) #명령어가 'I 숫자'인 경우 else: if len(heap) > 0: # 명령어가 'D 1'인 경우 if o[1] == '1': heap.pop(heap.index(heapq.nlargest(1, heap)[0..

[프로그래머스/Python] 디스크 컨트롤러 - Level3

https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 처음엔 이렇게 코드를 짰었습니다.. 애초에 소요시간으로 정렬한 후 현재 시점을 알 수 있는 now를 사용하여 작업 요청부터 종료까지 걸리는 시간을 계산하였습니다. 그런데....마지막 테스트케이스 빼고 다 실패^^가 떴습니다... 생각해보니 jobs = [[0,3], [2,1]]인 경우 이것을 정렬하면 [[2,1],[0,3]] 이 되는데 이 순서대로 실행이 ..

[프로그래머스/Python] 더 맵게 - Level2

https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 처음에 짠 코드를 까먹고 저장을 안해서 날려먹었지만... 일단 설명을 해보자면 scoville의 길이가 2이상일 때까지만 while문을 돌면서 최소값이 K이상이면 break를 하고 그렇지 않으면 "최소값1 + 최소값*2"를 계산하여 힙에 넣어주었습니다. 이렇게 코드를 짰더니 정확성 테스트에서 몇 개가 실패가 떴습니다.....ㅜ 질문하기에서 찾아보니 ..

[프로그래머스/Python] 다리를 지나는 트럭 - Level2

https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이 programmers.co.kr 처음에는 다리를 지난 트럭, 다리를 건너는 트럭 리스트를 따로 만들고, 각 트럭의 상태를 따로 저장해야되나 이런 저런 생각을 했다. 리스트도 너무 많고 너무 복잡해서 어디서부터 코드를 짜야할지 모르겠어서 검색해보니 다리를 건너는 트럭을 큐로 하면된다는 사실을 알고!! 그 뒤부터는 내가 코드를 짰다. 다리를 건너는 트럭 리스트를 큐로 구현하면 쉽게..

[프로그래머스/Python] 주식가격 - Level2

https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr def solution(prices): answer = [0] * len(prices) # 모두 0으로 만듬 # 가격이 떨어지지 않은 기간 계산 for i in range(0, len(prices)-1): for j in range(i+1, len(prices)): if prices[i] > prices[j]: answe..

[프로그래머스/Python] 프린터 - Level2

https://programmers.co.kr/learn/courses/30/lessons/42587?language=python3 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr def solution(priorities, location): prList = [(p, i) for i, p in enumerate(priorities)] # 우선순위와 인덱스를 튜플로 묶어 저장 que = [] # 프린트될 순서의 인덱스 리스트 # 프린트될 순서 구하기 while prList: pList = [p for p, i i..

[프로그래머스/Python] 기능개발 - Level2

https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr import math def solution(progresses, speeds): answer = [] day = [math.ceil((100 - p) / s) for p,s in zip(progresses, speeds)] # 각 작업 시간이 저장된 리스트 pop = 0 # 배포할 순서 값 (배포해야 할 첫번째 값) # 몇 개의 기능이 배포되는지 계산 ..

[프로그래머스/Python] 다트게임

https://programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr def solution(dartResult): bonus = {'S':1, 'D':2, 'T':3} answer = [] dartResult = dartResult.replace('10','k') # 10을 k로 바꿈 dartResult = ['10' if i == 'k' else i for i in dartResult] # 리스트로 저장 # 점수 합계 계산 i = -1 for d in dartResult: if d in 'SDT' : answer[i] = answer[i] ** bonus[d] elif d == '*': answer..

[프로그래머스/Python] 비밀지도

https://programmers.co.kr/learn/courses/30/lessons/17681?language=python3 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr def solution(n, arr1, arr2): answer = [] for b1, b2 in zip(arr1, arr2): result = format(b1 | b2, 'b') # OR연산한 후 이진수로 변환 result = result.rjust(n, '0') # 자리수를 맞춰줌 result = result.repla..

반응형