본문 바로가기

프로그래머스3

프로그래머스[Python] - 타겟 넘버 풀이 풀이 Permutation형식으로 복잡하게 접근하기 보다, 깊이 우선 탐색(dfs) 너비 우선 탐색(bfs)를 통해 numbers의 모든 값에 하나하나 계산해가면서 풀어나가는 방향을 잡았다. 특히 문제에서 덧셈, 뺄셈만 이용해서 target 값에 도달하라고 했으므로, 초기 경우의 값이 number[0]와 -number[0] 이 두가지를 베이스로 dfs와 bfs구조를 만들어 나가면 된다. dfs의 경우 재귀이기 때문에 재귀 부분을 먼저 짠 후, if를 통해 종료 조건을 잡아주면 된다. from collections import deque ## 재귀함수를 이용한 dfs 풀이 def dfs(numbers, target, depth): answer = 0 if(len(numbers) == depth) : if .. 2022. 8. 6.
프로그래머스[Python] - 더 맵게 풀이 풀이 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)의 식을 보며 O(NlogN)의 시간 복잡도를 가지는 heap 구조를 가지고 접근을 하였다. import heapq def solution(scoville, K): count = 0## 총 섞은 횟수를 저장하는 변수 heapq.heapify(scoville)## Heap 구조로 만들기 while len(scoville) >= 2: ## Heap 안에 한 개만 있으면 오류 나니까 if scoville[0] >= K:## Heap에서 가장 작은 값이 K보다 크다면 While문 종료 break first = heapq.heappop(scoville) second = heapq.heappo.. 2022. 8. 6.
프로그래머스[Python] - 기능개발 풀이 def solution(progresses, speeds): precedingWork = 0 // 마쳐야 하는 선행 기능 answer = [] while precedingWork = 100): ## 마쳐야할 선행 기능이 100을 넘을 경우 precedingWork += 1## 다음 기능이 100을 넘는지 확인하기 위해 count += 1## 완료된 기능 개.. 2022. 8. 5.