ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 18243 Small World Network with Python
    PS 2022. 3. 1. 02:19
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 18243 Small World Network

    ๐Ÿ’ก ์กฐ๊ฑด

    1. ์ฒซ ๋ฒˆ์งธ ์ค„์— ์ง€๊ตฌ์— ์žˆ๋Š” ์‚ฌ๋žŒ์˜ ์ˆ˜ N๊ณผ ์นœ๊ตฌ ๊ด€๊ณ„์˜ ๊ฐœ์ˆ˜ K.
      (1 โ‰ค N โ‰ค 100, 0 โ‰ค K โ‰ค Nร—(N-1)/2)

    2. ๋ชจ๋“  ์‚ฌ๋žŒ์€ 1๋ถ€ํ„ฐ N๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ๋‹ค.

    3. ๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ K+1๋ฒˆ์งธ ์ค„๊นŒ์ง€ ์นœ๊ตฌ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” A B๊ฐ€ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค.
      (1 โ‰ค A, B โ‰ค N)

    4. A์™€ B๊ฐ€ ์นœ๊ตฌ๋ฉด B์™€ A๋„ ์นœ๊ตฌ๋‹ค. ์ž๊ธฐ ์ž์‹ ๊ณผ ์นœ๊ตฌ์ธ ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.
      A์™€ B์˜ ์นœ๊ตฌ ๊ด€๊ณ„๋Š” ์ค‘๋ณต๋˜์–ด ์ž…๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

    5. ํ•ด๋‹น ๋„คํŠธ์›Œํฌ๊ฐ€ ์ž‘์€ ์„ธ์ƒ ๋„คํŠธ์›Œํฌ๋ฅผ ๋งŒ์กฑํ•˜๋ฉด
      "Small World!"๋ฅผ, ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด "Big World!"๋ฅผ ์ถœ๋ ฅ

    6. BFS, ๊ทธ๋ž˜ํ”„ ์ด๋ก  ์œ ํ˜•์˜ ๋ฌธ์ œ

    ๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

    from sys import stdin
    from collections import deque
    
    
    n, k = map(int, stdin.readline().split())
    network = [[] for _ in range((n + 1))]
    tf = True
    
    for i in range(k):
        a, b = map(int, stdin.readline().split())
        network[a].append(b)
        network[b].append(a)
    
    
    def bfs(root):
        visited = set()
        visited.add(root)
        q = deque()
        q.append((root, 0))
    
        while q:
            now, dist = q.popleft()
            if dist > 6:
                return False
    
            for node in network[now]:
                if node not in visited:
                    visited.add(node)
                    q.append((node, dist + 1))
    
        if len(visited) == n:
            return True
        else:
            return False
    
    
    for i in range(1, n + 1):
        if not bfs(i):
            tf = False
            break
    
    if tf:
        print("Small World!")
    else:
        print("Big World!")

    ๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

    ์˜ˆ์ œ

    10 8
    1 2
    2 3
    3 4
    4 5
    6 7
    7 8
    8 9
    9 10

    ์‹คํ–‰๊ฒฐ๊ณผ

    Big World!

    โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

    1. ๋„คํŠธ์›Œํฌ ์ƒ์˜ ์นœ๊ตฌ ์‚ฌ์ด๋Š” ์–‘๋ฐฉํ–ฅ ๊ฐ„์„ ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    2. ๊ทธ๋ž˜ํ”„๋กœ ์‚ฌ์šฉํ•  network ๋ผ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ๋ž˜ํ”„์— ์ž…๋ ฅํ•œ๋‹ค.

    3. 1๋ฒˆ ๋…ธ๋“œ๋ถ€ํ„ฐ bfs() ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ q ์— (๋…ธ๋“œ๋ฒˆํ˜ธ, dist)๋ฅผ ๋„ฃ์–ด ์ˆ˜ํ–‰ํ•œ๋‹ค.
      dist = 0 ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.

    4. bfs๊ฐ€ ์ˆ˜ํ–‰๋˜๋ฉด์„œ dist๊ฐ€ 6์„ ์ดˆ๊ณผํ•˜๋ฉด, False๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    5. visited (๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ set)์˜ ๊ธธ์ด๊ฐ€ ๋งŒ์•ฝ ๋…ธ๋“œ ์ด ๊ฐœ์ˆ˜ n๊ณผ ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด False ๋ฅผ ๋ฐ˜ํ™˜.

    6. ๋ฐ˜ํ™˜๋ฐ›์€ bfs ์˜ ๊ฒฐ๊ณผ๊ฐ’์ด False๋ผ๋ฉด "Big World!"
      ๋ฐ˜ํ™˜๋ฐ›์€ bfs ์˜ ๊ฒฐ๊ณผ๊ฐ’์ด True๋ผ๋ฉด "Small World!"

    ๐Ÿ’พ ๋Š๋‚€์ 

    1. BFS๋กœ๋Š” ํ’€์ด๋ฅผ ๊ฐ€๋Šฅํ–ˆ์ง€๋งŒ, ํ”Œ๋กœ์ด๋“œ-์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ๋Š” ์‹คํŒจํ–ˆ์—ˆ๋‹ค.
    2. (1)๋ฒˆ ์˜ ์ด์œ ๋Š” dist > 6 ์˜ ์กฐ๊ฑด์„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•ด์„œ์˜€๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.