[๋ฐฑ์ค€] 24480. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ 2/Python - Silver 2

2025. 2. 4. 17:07ยทCoding Test/Algorithms

โ“๋ฌธ์ œ

https://www.acmicpc.net/problem/24480

์„ฑ๋Šฅ ์š”์•ฝ

๋ฉ”๋ชจ๋ฆฌ: 70312 KB, ์‹œ๊ฐ„: 540 ms

๋ถ„๋ฅ˜

๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰, ๊ทธ๋ž˜ํ”„ ์ด๋ก , ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰, ์ •๋ ฌ

๋ฌธ์ œ ์„ค๋ช…

์˜ค๋Š˜๋„ ์„œ์ค€์ด๋Š” ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS) ์ˆ˜์—… ์กฐ๊ต๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. ์•„๋น ๊ฐ€ ์ˆ˜์—…ํ•œ ๋‚ด์šฉ์„ ํ•™์ƒ๋“ค์ด ์ž˜ ์ดํ•ดํ–ˆ๋Š”์ง€ ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•ด๋ณด์ž.

N๊ฐœ์˜ ์ •์ ๊ณผ M๊ฐœ์˜ ๊ฐ„์„ ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„(undirected graph)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ •์  ๋ฒˆํ˜ธ๋Š” 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ์ด๊ณ  ๋ชจ๋“  ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๋Š” 1์ด๋‹ค. ์ •์  R์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์œผ๋กœ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•  ๊ฒฝ์šฐ ๋…ธ๋“œ์˜ ๋ฐฉ๋ฌธ ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•˜์ž.

๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ ์˜์‚ฌ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ธ์ ‘ ์ •์ ์€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฉ๋ฌธํ•œ๋‹ค.

dfs(V, E, R) {  # V : ์ •์  ์ง‘ํ•ฉ, E : ๊ฐ„์„  ์ง‘ํ•ฉ, R : ์‹œ์ž‘ ์ •์ 
    visited[R] <- YES;  # ์‹œ์ž‘ ์ •์  R์„ ๋ฐฉ๋ฌธ ํ–ˆ๋‹ค๊ณ  ํ‘œ์‹œํ•œ๋‹ค.
    for each x ∈ E(R)  # E(R) : ์ •์  R์˜ ์ธ์ ‘ ์ •์  ์ง‘ํ•ฉ.(์ •์  ๋ฒˆํ˜ธ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฉ๋ฌธํ•œ๋‹ค)
        if (visited[x] = NO) then dfs(V, E, x);
}

โœ๐Ÿปํ’€์ด

๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ํ•˜์˜€์œผ๋ฏ€๋กœ U์™€ V์˜ ์ธ์ ‘๋ฆฌ์ŠคํŠธ์— ๊ฐ ์ •์ ์„ ๋„ฃ๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฉ๋ฌธํ•œ๋‹ค๊ณ  ํ•˜์˜€์œผ๋ฏ€๋กœ ๊ฐ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

๊ฐ ์ •์ ์ด ๋ช‡ ๋ฒˆ์งธ๋กœ ๋ฐฉ๋ฌธํ•œ ์ •์ ์ธ์ง€ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ cnt๋ฅผ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋ฉฐ visited์— ์ €์žฅํ•œ๋‹ค. ๋ชจ๋“  ์ •์ ์˜ ๋ฐฉ๋ฌธ์„ ๋งˆ์น˜๊ณ  ๋ฐฉ๋ฌธํ•œ ์ •์ ์€ visited์— ์ €์žฅ๋œ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ณ , ์‹œ์ž‘ ์ •์ ์—์„œ ๋ฐฉ๋ฌธํ•˜์ง€ ๋ชปํ•œ ๊ณณ์ด๋ผ๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ’ป์ฝ”๋“œ

import sys

input = sys.stdin.readline
sys.setrecursionlimit(10**6) # recursion limit ๋Š˜๋ฆฌ๊ธฐ

N, M, R = map(int, input().split())
graph = [[] for _ in range(N+1)]
for _ in range(M):
    U, V = map(int, input().split())
    graph[U].append(V)
    graph[V].append(U)

for i in range(1, N+1):
    graph[i].sort(reverse=True)

visited = [False] * (N+1)
cnt = 1
def dfs(u):
    global cnt
    visited[u] = cnt
    cnt += 1
    for v in graph[u]:
        if not visited[v]:
            dfs(v)

dfs(R)
for i in range(1, N+1):
    if not visited[i]:
        print(0)
    else:
        print(visited[i])

๐Ÿ“ํ›„๊ธฐ

PyPy3๋กœ ํ•˜๋ฉด ๋ณดํ†ต ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋งŽ์ด ์žกํžˆ๋˜๋ฐ ๊ทธ๋ž˜์„œ ๊ทธ๋Ÿฐ์ง€ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ณ  Python3๋กœ ํ•˜๋‹ˆ๊นŒ ๋งž์•˜๋‹ค๊ณ  ํ•œ๋‹ค...

PyPy3๋กœ ์“ฐ๋Š” ๊ณณ ์€๊ทผ ์žˆ๋˜๋ฐ ๋ฉ”๋ชจ๋ฆฌ๋„ ์—ด์‹ฌํžˆ ๊ณ„์‚ฐํ•ด์•ผ ํ•  ๋“ฏ..๐Ÿฅฒ

๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ œ ์ž์ฒด๊ฐ€ recursion์„ ์จ์•ผํ•˜๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ recursion error๋‚˜๋Š” ๊ฒƒ๋„ ์–ด์ด๊ฐ€ ์ข€ ์—†๋‹ค..

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Coding Test > Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 1012. ์œ ๊ธฐ๋† ๋ฐฐ์ถ”/Python - Silver 2  (0) 2025.02.06
[๋ฐฑ์ค€] 2667. ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ/Python - Silver 1  (1) 2025.02.05
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ/Python - Lv.2  (0) 2025.01.27
[๋ฐฑ์ค€] 1753. ์ตœ๋‹จ๊ฒฝ๋กœ/Python - ๊ณจ๋“œ4  (0) 2025.01.20
[๋ฐฑ์ค€] 1449. ์ˆ˜๋ฆฌ๊ณต ํ•ญ์Šน  (0) 2024.12.21
'Coding Test/Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 1012. ์œ ๊ธฐ๋† ๋ฐฐ์ถ”/Python - Silver 2
  • [๋ฐฑ์ค€] 2667. ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ/Python - Silver 1
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ/Python - Lv.2
  • [๋ฐฑ์ค€] 1753. ์ตœ๋‹จ๊ฒฝ๋กœ/Python - ๊ณจ๋“œ4
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future๐Ÿ’•
    The Engineer, Lucy
    • Instagram
    • GitHub
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (171) N
      • Linux (26)
      • Infra (9)
      • Cloud (25)
        • AWS (2)
        • GCP (3)
        • Docker (4)
        • Kubernetes (14)
        • IaC (2)
      • NGINX (1)
      • DevOps (3)
      • Computer Science (17)
        • Data Structure (0)
        • Algorithms (1)
        • Operating System (3)
        • Network (11)
        • Database System (2)
      • Coding Test (85) N
        • Algorithms (77) N
        • SQL (7)
      • ETC (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ๋งํฌ

    • Lucy's Instagram
    • Lucy's GitHub
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ฐฑ์ค€
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    ๋ฆฌ๋ˆ…์Šค
    Java
    Shell Script
    Kubernetes
    dfs
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ณต๋ถ€
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ
    K8s
    ์ž๋ฐ”
    Shell
    ๋„คํŠธ์›Œํฌ
    ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค
    ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    docker
    ์‰˜ ์Šคํฌ๋ฆฝํŠธ
    ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ ์ง€์‹
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 2๊ธ‰
    bfs
    ์˜ค๋ธ”์™„
    ์…ธ ์Šคํฌ๋ฆฝํŠธ
    programmers
    Linux
    ๋„์ปค
    cs ๊ธฐ์ดˆ ์ง€์‹ ์ •๋ฆฌ
    Baekjoon
    network
    ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
The Engineer, Lucy
[๋ฐฑ์ค€] 24480. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ 2/Python - Silver 2
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”