๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜

    [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..