[2021 카카오 채용 연계형 인턴십] 거리두기 확인하기
주요 조건들을 체크하자. - 맨해튼 거리가 2이하이면 탈락 - 테이블도 이동에 포함 - 파티션은 이동에 포함하지 않음 bfs로 접근. from collections import deque def bfs(place): start = [] d = (1,0),(-1,0),(0,1),(0,-1) for i in range(5): for j in range(5): if place[i][j] == 'P': start.append((i,j)) q = deque() visited = [[False] * 5 for _ in range(5)] for s in start: q.append((s[0], s[1], 0)) visited[s[0]][s[1]] = True while q: x, y, dist = q.popleft(..
1914. 하노이 탑
옛날에 하노이 탑을 직접 해봐서 규칙이 있다는 것을 알았다. 하지만 코드로 구현하는데 어려움을 겪었다. 재귀 호출을 통해 구현할 수 있는데 재귀함수 하나를 정의해야한다. f(n,a,b,c) → n개의 원판이 a기둥에 있을 때, c기둥으로 모두 이동 시키는 함수 n-1개의 원판을 2번기둥으로 옮김 1번 기둥에 남아있는 한개의 원판을 3번으로 2번기둥에 있는 n-1개의 원판을 3번 기둥으로 def f(n, a, b, c): if(n == 1): print(a, c, sep = " ") else: f(n-1, a, c, b) f(1, a, b, c) f(n-1, b, a, c) n = int(input()) print(2**n-1) if(n
22. Generate Parentheses
모든 쌍을 다 찾아야 하므로, dfs를 진행했다. 여는괄호, 닫는 괄호가 둘다 0이 되었을 때, 배열에 푸쉬를 해주었고, 오른쪽 괄호의 개수가 더 작다면 무조건 리턴조건, 왼쪽 괄호의 개수가 0보다 작다면 무조건 리턴 조건에 포함된다. 따라서 풀이는 아래와 같다. const generateParenthesis = function(n) { let res = []; const dfs = (str, left, right) => { if(left === 0 && right === 0) { res.push(str); return; } if(right < left || left < 0) return dfs(str+"(", left - 1, right) dfs(str+")", left, right - 1) } dfs..