[Coding Test]
[백준] 12851 파이썬(python) : 숨바꼭질 2 - (visit수정)
https://www.acmicpc.net/problem/12851 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net from collections import deque import sys n, k = map(int, sys.stdin.readline().split()) visit = [ [-1, 0] for _ in range(100001) ] #1 def bfs(n): q = deque([n]) visit[n][0] = 0 #2 visit[n][1] = 1 #3 whil..
[백준] 11725 파이썬(python) : 트리의 부모 찾기 - (dfs, bfs)
11725번: 트리의 부모 찾기 bfs풀이) from collections import deque import sys n = int(input()) graph = [ [] for _ in range(n+1) ] for _ in range(n-1): a, b = map(int, sys.stdin.readline().split()) graph[a].append(b) graph[b].append(a) visit = [False] * (n+1) def bfs(): q = deque() q.append(1) while q: v = q.popleft() for i in graph[v]: past = v if not visit[i]: visit[i] = v #1 q.append(i) bfs() for i in ran..
[백준] 11724 파이썬(python) : 연결 요소의 개수 - (★)
11724번: 연결 요소의 개수 import sys n, m = map(int, input().split()) graph = [ [] for _ in range(n+1) ] for _ in range(m): a, b = map(int, sys.stdin.readline().split()) graph[a].append(b) graph[b].append(a) cnt = 0 visit = [False] * (n+1) def dfs(v): visit[v] = True for i in graph[v]: if not visit[i]: dfs(i) for i in range(1, n+1): if not visit[i]: dfs(i) cnt += 1 print(cnt) 2606번 : 바이러스문제와 비슷한 문제였다. 개..
[백준] 13023 파이썬(python) : ABCDE - (★)
13023번 : ABCDE import sys n, m = map(int, sys.stdin.readline().split()) graph = [ [] for _ in range(n+1) ] for _ in range(m): a, b = map(int, sys.stdin.readline().split()) graph[a].append(b) graph[b].append(a) visit = [False] * (n+1) res = False def dfs(idx, depth): global res if depth == 4: #1 res = True return for i in graph[idx]: if not visit[i]: visit[i] = True dfs(i, depth+1) visit[i] = Fal..
[백준] 15666 파이썬(python) : N과 M (12)
15666번 : N과 M (12) import sys n, m = map(int, sys.stdin.readline().split()) number = list(map(int, sys.stdin.readline().split())) number.sort() res = [] def backTracking(depth): if depth == m: print(*res) return overlap = 0 #1 for i in range(len(number)): if res and res[-1] > number[i]: continue if overlap != number[i]: #2 overlap = number[i] res.append(number[i]) backTracking(depth+1) res.pop()..
[백준] 15665 파이썬(python) : N과 M (11)
15665번 : N과 M (11) import sys n, m = map(int, sys.stdin.readline().split()) number = list(map(int, sys.stdin.readline().split())) number.sort() res = [] def backTracking(depth): if depth == m: print(*res) return overlap = 0 for i in range(len(number)): if overlap != number[i]: overlap = number[i] res.append(number[i]) backTracking(depth+1) res.pop() backTracking(0) 중복을 허용하고 자신보다 낮은 숫자가 다음에 와도 된다..