본문 바로가기

Programming/Python

(16)
[프로그래머스] 힙(Heap) - 이중우선순위큐 (Python3, 파이썬) 1. 문제 문제 요약 이중 우선순위 큐가 명령어대로 동작하도록 구현해서 배열에 담긴 명령어들의 동작이 모두 끝난 뒤 큐의 상태를 return하자. 주어지는 값 : 이중 우선순위 큐가 할 연산이 들어있는 operations 배열 사용되는 공식 : 위 사진에 명령어에 대한 설명 있음. 2. 입출력 예시와 설명 3. 코드 - 내가 시도한 코드 (힙 사용) import heapq def solution(operations): answer = [] heapq.heapify(answer) for x in operations: i,j = x.split() if (i == "I"): j=int(j) heapq.heappush(answer,j) elif (x == "D -1"): if(answer): heapq.heap..
[프로그래머스] 힙(Heap) - 디스크 컨트롤러 (Python3, 파이썬) 보호되어 있는 글입니다.
[프로그래머스] 힙(Heap) - 더 맵게 (Python3, 파이썬) 1. 문제 문제 요약 '몇번' 섞어야 Leo가 원하는 스코빌 지수 이상의 음식만 배열에 남는지 출력하자. 주어지는 값 : Leo가 가진 음식의 스코빌 지수를 담은 배열, 원하는 스코빌 지수 K 사용되는 공식 : 섞은 음식의 스코빌 지수 = 제일 작은 스코빌 지수 + 두 번째로 작은 스코빌지수 x 2 2. 입출력 예시와 설명 3. 코드 - 내가 시도한 코드 정확률 50%였다... 효율성 테스트는... 빠르게 다른 사람의 코드를 참고해보자. - 정답 코드 (참고한 코드) import heapq def solution(scoville, k): heap = [] for i in scoville: heapq.heappush(heap, i) answer = 0 while heap[0] < k: try: heapq...
[프로그래머스] 스택/큐 - 주식가격 (Python3, 파이썬) 문제 prices 리스트에서 가격이 떨어지지 않은 기간을 각 항목마다 구해 return해줘야 한다. 바로 다음에 가격이 떨어지면 1초간 가격이 떨어지지 않은 것이다. 코드 1. 효율성 0점으로 통과되지 못한 코드 def solution(prices): answer = [] while prices: current = prices.pop(0) time = 0 for v in prices: if current > v: time+=1 break else: time+=1 answer.append(time) return answer while과 for이 둘 다 쓰여 시간 초과가 발생한 것으로 예상된다. for 2번인 코드로 바꿔보자. 2. 통과한 코드 def solution(prices): answer = [0] ..
[프로그래머스] 스택/큐 - 다리를 지나는 트럭 (Python3, 파이썬) 문제 bridge_length, weight, truck_weights 3개가 주어진다. 트럭은 1초에 1만큼 움직인다. 트럭의 개수와 상관없이 다리 길이만큼의 시간은 무조건 소요된다. 주의할 점은 현재 다리를 건너는 트럭 무게의 합은 다리가 견딜 수 있는 무게보다 작아야 한다. + 다리에 완전히 오르지 않은 트럭의 무게는 무시한다. 코드 def solution(bridge_length, weight, truck_weights): bridge = [0]*bridge_length answer=0 while bridge: answer+=1 bridge.pop(0) if truck_weights: if sum(bridge)+truck_weights[0]
[프로그래머스] 스택/큐 - 프린터 (Python3, 파이썬) 문제 내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는지 return해줘야 한다. 주어지는 입력은 priorities(문서의 중요도가 순서대로 담긴 배열)와 location(내가 인쇄를 요청한 문서가 어떤 위치에 있는지 알려주는 정수 변수) 주의할 점은 현재 인쇄할 문서보다 중요도가 더 높은 문서가 뒤에 있는 경우 현재 인쇄할 문서는 맨 뒤로 보낸다. 코드 def solution(priorities, location): queue = [(i,v) for i,v in enumerate(priorities)] answer = 0 while True: tmp = queue.pop(0) if any(tmp[1] < q[1] for q in queue): queue.append(tmp) else: answer += ..
[프로그래머스] 스택/큐 - 기능개발 (Python3, 파이썬) 문제 각 배포마다 몇 개의 기능이 배포되는지가 return값이다. 주의할 점은 뒤에 있는 기능이 먼저 개발되더라도 앞에 있는 기능이 배포될 때 함께 배포된다는 점이다. 주어지는 배열은 2가지로 progresses(작업의 개수)와 speeds(작업의 개발 속도)이다. 코드 def solution(progresses, speeds): answer = [] day = 0 count = 0 while progresses: if (progresses[0] + day*speeds[0]) >= 100: progresses.pop(0) speeds.pop(0) count += 1 else: if count > 0: answer.append(count) count = 0 day += 1 answer.append(coun..
[프로그래머스] 코딩테스트 연습 - 해시 (Python3, 파이썬) 1. 완주하지 못한 선수 문제 코드 def solution(participant, completion): participant.sort() completion.sort() for i in range(len(completion)): if participant[i] != completion[i]: return participant[i] return participant[-1] 참가한 선수들과 완주한 선수들이 각각 담긴 리스트가 2개 주어진다. 먼저, 두 리스트를 sort함수로 정렬해준다. 그 후 for문으로 둘을 비교하며 완주한 선수 목록에 없는 선수를 찾아줘야 한다. for문의 반복 횟수는 완주한 선수 리스트의 길이로 한다. 참가한 선수 리스트의 길이로 할 경우 완주한 선수 리스트에는 없는 index로의 ..