목록Algorithm/Programmers (76)
S E P H ' S
코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 풀이 1. 시작은 항상 "ICN" 2. 가능한 경로가 2개 이상이면 알파벳 순서가 앞서는 경로를 return -> tickets을 오름차순으로 정렬하고 찾은 완전한 경로가 정답 3. 주어진 항공권 모두 사용 4. 모든 도시를 방문할 수 없는 경우는 주어지지 않는다. -> answer는 항상 존재 5. 중복된 항공권 존재 -> 방문 여부를 인덱스로 관리 def solution(tickets): answer = [] tickets...
코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr def solution(begin, target, words): answer = len(words) depth = -1 if target not in words: return 0 answer = DFS(begin, target, words, depth, answer) return answer def DFS(begin, target, words, depth, answer): depth += 1 nextWord = [] i..
코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr from collections import deque def solution(n, computers): answer = 0 visited = [False] * n for i in range(n): if not visited[i]: bfs(i, computers, visited) answer += 1 return answer def bfs(start, computers, visited): q = deque([start]) while q: cur = q.pop..
코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr 풀이 - 1행부터 시작하며, 현재 열의 발판에 이전 행의 최댓값을 더하면서 내려오는 방식으로 해결했다. - 정답은 마지막 행 중에서 가장 큰 값을 반환하면 된다. def solution(land): for i in range(1, len(land)): for j in range(len(land[0])): land[i][j] += max(land[i-1][:j] + land[i-1][j+1:]) return max(land[len(land)-1])