๐์๊ณ ๋ฆฌ์ฆ
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 2573๋ฒ: ๋น์ฐ
๋ฌธ์ ํ์ด DFS๋ฌธ์ , ๋ค๋ง ์กฐ๊ธ ๊น๋ค๋กญ๊ฒ ๊ตฌํํด์ผ ํ๋ค. "๋ง์ผ ์ ๋ถ ๋ค ๋ น์ ๋๊น์ง ๋ ๋ฉ์ด๋ฆฌ ์ด์์ผ๋ก ๋ถ๋ฆฌ๋์ง ์์ผ๋ฉด ํ๋ก๊ทธ๋จ์ 0์ ์ถ๋ ฅํ๋ค." ํด๋น ์กฐ๊ฑด์ ๊ตฌํํ์ง ์์ 62%์์ ํ๋ ธ์ต๋๋ค๊ฐ ๋์๋ค. [๋ฐ๋ก] 5 5 0 0 0 0 0 0 2 2 2 0 0 2 2 2 0 0 2 2 2 0 0 0 0 0 0 ๋ต : 0 ํ๋ฆฐ ๋ต : 3 ๋ํ DFS๋ก ํ ๊ฒฝ์ฐ sys.setrecursionlimit(10**4) setreucrsionlimit์ ๋๋ฌด ํฐ ๊ฐ์ ๋ฃ์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋์จ๋ค. ์ฃผ์ํ ๊ฒ!! ์ฝ๋ import sys sys.setrecursionlimit(10**4) input = sys.stdin.readline n, m = map(int, input().split()) graph = [..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 2668๋ฒ: ์ซ์๊ณ ๋ฅด๊ธฐ
๋ฌธ์ ํ์ด ์ฌ์ดํด์ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ์๋ ํ์ด์ ๊ฑฐ์ ๋์ผํ๋ค. https://ku-hug.tistory.com/169 [Python] ๋ฐฑ์ค 9466๋ฒ: ํ ํ๋ก์ ํธ ๋ฌธ์ ํ์ด ์ฌ์ดํด์ ํ๋ณํ๋ ๋ฌธ์ ์ด๋ค. 1. ๋ฌธ์ ์์ ์ฃผ์ด์ง ๋ฐฐ์ด์ parent ๋ฐฐ์ด์ด๋ผ ํ์. 2. ์ฌ์ดํด์ ํ๋ณํ๊ธฐ ์ํด ์ด๋๊น์ง ๋ฐฉ๋ฌธํ ๋ ธ๋๋ฅผ cycle ๋ฐฐ์ด์ ์ ์ฅ, ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ๋ฅผ ์ํด visited ๋ฐฐ์ด์ ์ ku-hug.tistory.com ์ฝ๋ import sys input = sys.stdin.readline n = int(input()) graph = [0] visited = [False] * (n + 1) cycle = [] ans = [] for _ in range(n): graph.append(int(input())) d..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 9466๋ฒ: ํ ํ๋ก์ ํธ
๋ฌธ์ ํ์ด ์ฌ์ดํด์ ํ๋ณํ๋ ๋ฌธ์ ์ด๋ค. 1. ๋ฌธ์ ์์ ์ฃผ์ด์ง ๋ฐฐ์ด์ parent ๋ฐฐ์ด์ด๋ผ ํ์. 2. ์ฌ์ดํด์ ํ๋ณํ๊ธฐ ์ํด ์ด๋๊น์ง ๋ฐฉ๋ฌธํ ๋ ธ๋๋ฅผ cycle ๋ฐฐ์ด์ ์ ์ฅ, ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ๋ฅผ ์ํด visited ๋ฐฐ์ด์ ์์ฑ 3. 1๋ฒ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ์ ๋ 4. 1๋ฒ ๋ ธ๋์ ์ฐ๊ฒฐ๋ 3๋ฒ ๋ ธ๋ ๋ฐฉ๋ฌธ ๊ฐ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ณ , ๊ทธ ๋ ธ๋์ ์ด์ด์ง ๋ ธ๋๋ฅผ ๊ณ์ ๋ฐฉ๋ฌธํ๋ค. ๋ง์ฝ ์ด๋ฏธ ๋ฐฉ๋ฌธํ ๋ ธ๋์ด๊ณ ์ฌ์ดํด ๋ฐฐ์ด์ ํด๋น ๋ ธ๋๊ฐ ์กด์ฌํ๋ฉด ์ฌ์ดํด์ด ํ์ฑ๋์๋ค๋ ๊ฒ์ด๋ค. ์ ๊ณผ์ ์ ์ง์ ํด๋ณด๋ฉด ์ดํด๊ฐ ์ฝ๋ค. ์ฝ๋ import sys sys.setrecursionlimit(10**7) input = sys.stdin.readline def dfs(st): global team visited[st] = True cycle.append(s..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 16929๋ฒ: Tow Dots
๋ฌธ์ ํ์ด ์์ ์ง์ ๊ณผ ๊ฐ์ ๋ฌธ์์ธ ๊ฒฝ์ฐ dfs๋ฅผ ์ํํ๊ณ ๊ธธ์ด๊ฐ 4 ์ด์์ด๊ณ ์์ ์ง์ ์ผ๋ก ๋์์จ ๊ฒฝ์ฐ "Yes"๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค. ์ฝ๋ import sys input = sys.stdin.readline n, m = map(int, input().split()) graph = [list(input().rstrip()) for _ in range(n)] tempVisited = [[False] * m for _ in range(n)] dir = ((0, 1), (0, -1), (1, 0), (-1, 0)) def dfs(c, sti, stj, nowi, nowj, cnt): for dx, dy in dir: ni, nj = nowi + dy, nowj + dx if (sti, stj) == (ni, n..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 1987๋ฒ: ์ํ๋ฒณ
๋ฌธ์ ํ์ด dfs + ๋ฐฑํธ๋ํน์ผ๋ก ํ์๋ค. pypy๋ก ์ ์ถ ์ค๋ณต๋ ๋ฌธ์๋ฅผ ์ฒดํฌํ๊ธฐ ์ํด alpha ๋ฐฐ์ด ์์ฑ (alpha[0] = True์ธ ๊ฒฝ์ฐ A์นธ์ ์ง๋ฌ๋ค๋ ์๋ฏธ) alpha = [False] * 26 ord('A') - 65 ์ด๋ฐ ์์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ๋ง์ถฐ์ฃผ์๋ค. ๊ทธ ํ ๋ฐฑํธ๋ํน์ ํ๋ค. ์ฝ๋ import sys input = sys.stdin.readline r, c = map(int, input().split()) graph = [list(input().rstrip()) for _ in range(r)] alpha = [False] * 26 dir = ((0, 1), (0, -1), (1, 0), (-1, 0)) ans = 0 def condition(ni, nj): return ni < 0 or ..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 1068๋ฒ: ํธ๋ฆฌ
๋ฌธ์ ํ์ด ์ ๋ ฅ๋ฐ์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ ๋ ธ๋์ ์์ ๋ ธ๋๋ฅผ ์ ์ฅํ๋ child ๋ฐฐ์ด์ ๋ง๋ค์๋ค. ์ญ์ ํ ๋ ธ๋์ ๊ฒฝ์ฐ child ๋ฐฐ์ด์ ์ถ๊ฐํ์ง ์์๋ค. n = int(input()) parent = list(map(int, input().split())) delNode = int(input()) child = [[] for _ in range(n)] for idx in range(n): if parent[idx] == -1 or idx == delNode: continue child[parent[idx]].append(idx) ์์ ๋ ธ๋๊ฐ ์๋ค๋ ๊ฒ์ ๋ฆฌํ ๋ ธ๋์์ ์๋ฏธ ์ ๊ฑฐํ ๋ ธ๋์ ์์ ๋ ธ๋๋ค์ ์ ๋ถ ๋ฆฌํ ๋ ธ๋๋ฅผ ๋ง๋ค๊ธฐ ์ํด ํด๋น ๋ ธ๋์ -1 ๋์ def dfs(d): # ๋ฆฌํ ๋ ธ๋์ธ ๊ฒฝ์ฐ if ch..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 1194๋ฒ: ๋ฌ์ด ์ฐจ์ค๋ฅธ๋ค, ๊ฐ์
๋ฌธ์ ํ์ด ๋นํธ ๋ง์คํน์ ์ฌ์ฉํด ํ์๋ค. ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ์ํ : 0b0 ํค ์์ : 0b1 aํค : 0b10 bํค : 0b100 cํค : 0b1000 a, cํค : 0b1010 ... ์ด๋ฐ ์์ผ๋ก ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ๊ธฐ๋กํ๋ค. ๋ํ haveKey์ ๋ฏผ์์ด๊ฐ ๋ณด์ ํ ์ด์ ์ ๋ณด๋ฅผ ๋นํธ ๋ง์คํนํ๋ค. ํค ์์ : 0b1 aํค ๋ณด์ : 0b11 bํค ๋ณด์ : 0b101 a, bํค ๋ณด์ : 0b111 ... ๋ง์ฝ a, bํค๋ฅผ ๊ฐ์ง ๋ฏผ์์ด๊ฐ ์ขํ(x, y)์ ๋ฐฉ๋ฌธํ๋ ค ํ๋ค. ํ์ง๋ง ํด๋น ์ขํ์ ์ด๋ฏธ a, b, cํค๋ฅผ ์์ ํ ์ฑ๋ก ๋ฐฉ๋ฌธํ ์ ์ด ์๋ค๋ฉด ๋ฐฉ๋ฌธํ ํ์๊ฐ ์๋ค. if (visited[ni][nj] | haveKey) == visited[ni][nj]: continue ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ดํดํ๊ธฐ ์ฝ๋ค. htt..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 11578๋ฒ: ํ์ ๋ชจ์ง
๋ฌธ์ ํ์ด ๋นํธ ๋ง์คํน์ ์ฌ์ฉํ์ฌ ์ ๋ ฅ n, m = map(int, input().split()) arr = [0b0000000000] * (m + 1) for i in range(1, m + 1): question = list(map(int, input().split()))[1:] for q in question: arr[i] |= (1
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 17472๋ฒ: ๋ค๋ฆฌ ๋ง๋ค๊ธฐ 2
๋ฌธ์ ํ์ด ์ ๋ ฅ n, m = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(n)] visited = [[False] * m for _ in range(n)] dir = ((0, 1), (0, -1), (1, 0), (-1, 0)) ์ฌ์ ๊ตฌ๋ถ ์ง๊ธฐ ์ํด bfs๋ฅผ ์ฌ์ฉํ๋ค. def marking(y, x, mark): q = deque() q.append((y, x)) graph[y][x] = mark visited[y][x] = True while q: i, j = q.popleft() for dy, dx in dir: ni, nj = i + dy, j + dx if condition(ni, nj) or n..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 2146๋ฒ: ๋ค๋ฆฌ ๋ง๋ค๊ธฐ
๋ฌธ์ ํ์ด ์ ๋ ฅ import sys from collections import deque imput = sys.stdin.readline n = int(input()) graph = [list(map(int, input().split())) for _ in range(n)] visited = [[False] * n for _ in range(n)] dir = ((0, 1), (0, -1), (1, 0), (-1, 0)) ์ฌ์ ๋๋๋ ๊ณผ์ 0์ด ์๋ ์ขํ๋ฅผ ๋ฐ๊ฒฌํ ๊ฒฝ์ฐ ๊ทธ ์ขํ์ ์ฐ๊ฒฐ๋ ๊ฐ์ ์ ๋ถ mark๋ก ๋ฐ๊พผ๋ค. mark = 1 for i in range(n): for j in range(n): if graph[i][j] and not visited[i][j]: marking(i, j, mark) ma..