본문 바로가기

Algorithm

(175)
[프로그래머스] Lv.2 다리를 지나는 트럭 https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답코드 def solution(bridge_length, weight, truck_weights): from collections import deque q = deque(truck_weights) bridge = deque([0] * bridge_length) answer = 0 total = 0 while q: answer += 1 total -= bridge[0] bridge.popleft..
[프로그래머스] Lv.2 게임 맵 최단거리 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답코드 def solution(maps): from collections import deque q = deque() q.append((0, 0)) answer = 0 chk = [[False] * len(maps[0]) for _ in range(len(maps))] dy, dx = [0, -1, 0, 1], [1, 0, -1, 0] while q: ey, ex = q.popleft() for ..
[프로그래머스] Lv.2 스킬트리 https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답코드 (본인) def solution(skill, skill_trees): answer = [] for tree in skill_trees: allow_skill = [] for alpha in tree: if alpha in skill: allow_skill.append(alpha) for idx, sk in enumerate(allow_skill): if sk != skill[idx]: a..
[프로그래머스] Lv.2 오픈채팅방 (카카오) https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답코드 def solution(record): answer = [] user = {} for history in record: string = history.split() if string[0] == 'Enter': user[string[1]] = string[2] elif string[0] == 'Change': user[string[1]] = string[2] for history in re..
[프로그래머스] Lv.2 더 맵게 https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답코드 def solution(scoville, K): import heapq heap = [x for x in scoville] heap.sort() answer = 0 while heap[0] < K and len(heap) != 1: num = heapq.heappop(heap) + (heapq.heappop(heap) * 2) heapq.heappush(heap, num) answer +..
[프로그래머스] Lv.2 프린터 https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답코드 (2, 5, 18 테스트 케이스 런타임 에러) def solution(priorities, location): from collections import deque q = deque((num, idx) for idx, num in enumerate(priorities)) answer = 0 while q: priority = q.popleft() if priority[0] < max(q)..
[프로그래머스] Lv.2 기능개발 https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답코드 def solution(progresses, speeds): answer = [] time = 0 count = 0 while len(progresses) > 0: if progresses[0] + (time * speeds[0]) >= 100: progresses.pop(0) speeds.pop(0) count += 1 else: if count > 0: answer.append(cou..
[프로그래머스] Lv.2 n^2 배열 자르기 https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 left와 right의 값으로 해당 위치의 값을 찾을 방법을 고민해보기 시작했고 그 결과 위치값에서 n을 나눠준 나머지와 몫 중 큰 값이 1을 더해준 값이 해당 위치의 값이라는 사실을 알게 되었다. 2. 정답코드 (1) def solution(n, left, right): answer = [] for i in range(1, n + 1): for j in range(1, n + 1)..