프로그래머스 113

[프로그래머스] 피로도

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges answer = 0 # 답 N = 0 # 던전 개수 visited = [] # 방문처리 def dfs(k, cnt, dungeons): global answer if cnt > answer: # 최대 방문 던전 수 경신 answer = cnt for j in range(N): # 최소 피로도 조건 충족, 방문하지 않은 던전 if k >= dungeons[j][0] and not visited[j]: visited[j] = 1 dfs(k - dungeons[j][1], cnt + 1, dungeons) # 다른 곳부터 시작했을 때 모든 경우의 수를 따짐 visited[j] = 0..

[프로그래머스] 큰 수 찾기

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges def solution(number, k): answer = [] for num in number: if not answer: answer.append(num) continue if k > 0: while answer[-1] < num: answer.pop() k -= 1 if not answer or k 0 else answer return ''.join(answer) * 스택을 활용 * k 횟수가 0보다 크고 answer의 마지막보다 큰 수가 나타났을 때 pop 참고: https://velog.io/@soo5717/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E..

[프로그래머스] 소수찾기

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges from itertools import permutations def solution(numbers): answer = [] nums = [n for n in numbers] per = [] for i in range(1, len(numbers)+1): per += list(permutations(nums, i)) new_nums = [int(("").join(p)) for p in per] for n in set(new_nums): if n < 2: continue check = True for i in range(2, int(n**0.5) + 1): if n % i == 0..

[프로그래머스] 이중우선순위큐

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges import heapq def solution(operations): answer = [] while operations: o, num = operations.pop(0).split() if o == "I": heapq.heappush(answer, int(num)) elif answer and o == "D" and int(num) > 0: answer.pop() elif answer and o == "D" and int(num) < 0: answer.pop(0) answer.sort() if answer: return [answer[-1], answer[0]] else: return [..

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

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 테스트 케이스 한 곳에서 계속 시간초과 에러 남 def solution(bridge_length, weight, truck_weights): answer = 0 truck_weights.reverse() bridge = [0 for i in range(bridge_length)] while bridge: answer += 1 bridge.pop(0) if truck_weights: sum_weights = sum(bridge) if sum_weights + truck_weights[-1] > weight: bridge.append(0) else: bridge.append(truck_weig..

[프로그래머스] 기능개발

레벨에 비해 쉬운 문제지만 혼자서 문제의도를 지켜서 큐 만들어 풀었다는 거에 매우 만족 예전에 풀어놨던 문제라 점수는 알 수 없지만 그래도 아주 만족 from collections import deque def solution(progresses, speeds): wait_for_complete = deque() for progress, speed in zip(progresses, speeds): div, mod = divmod((100 - progress), speed) if mod > 0 : wait_for_complete.append(div + 1) else: wait_for_complete.append(div) 기준 = [0, wait_for_complete.popleft()] answer = [..

[프로그래머스] 베스트 앨범

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 사실 조건은 4개로 보아야 함 오랜만에 +2점...! from functools import cmp_to_key def cmp_sum(x, y): return y[1] - x[1] def cmp_by_condition(x, y): x_index, x_play = x y_index, y_play = y if x_play == y_play: return x_index - y_index else: return y_play - x_play def solution(genres, plays): answer = [] _dict1 = dict() _dict2 = dict() for i, (genre, p..

반응형