๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 5567_๊ฒฐํ˜ผ์‹

๋ฟŒ์•ผ._. 2022. 1. 25. 22:19

Silver II

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/5567)

<๊ฒฐํ˜ผ์‹>

๋ฌธ์ œ 

 

์ƒ๊ทผ์ด๋Š” ์ž์‹ ์˜ ๊ฒฐํ˜ผ์‹์— ํ•™๊ต ๋™๊ธฐ ์ค‘ ์ž์‹ ์˜ ์นœ๊ตฌ์™€ ์นœ๊ตฌ์˜ ์นœ๊ตฌ๋ฅผ ์ดˆ๋Œ€ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ƒ๊ทผ์ด์˜ ๋™๊ธฐ๋Š” ๋ชจ๋‘ N๋ช…์ด๊ณ , ์ด ํ•™์ƒ๋“ค์˜ ํ•™๋ฒˆ์€ ๋ชจ๋‘ 1๋ถ€ํ„ฐ N๊นŒ์ง€์ด๋‹ค. ์ƒ๊ทผ์ด์˜ ํ•™๋ฒˆ์€ 1์ด๋‹ค.
์ƒ๊ทผ์ด๋Š” ๋™๊ธฐ๋“ค์˜ ์นœ๊ตฌ ๊ด€๊ณ„๋ฅผ ๋ชจ๋‘ ์กฐ์‚ฌํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฒฐํ˜ผ์‹์— ์ดˆ๋Œ€ํ•  ์‚ฌ๋žŒ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

 

์ž…๋ ฅ

 

์ฒซ์งธ ์ค„์— ์ƒ๊ทผ์ด์˜ ๋™๊ธฐ์˜ ์ˆ˜ n (2 ≤ n ≤ 500)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด m (1 ≤ m ≤ 10000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„๋ถ€ํ„ฐ m๊ฐœ ์ค„์—๋Š” ์นœ๊ตฌ ๊ด€๊ณ„ ai bi๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ ai < bi ≤ n) ai์™€ bi๊ฐ€ ์นœ๊ตฌ๋ผ๋Š” ๋œป์ด๋ฉฐ, bi์™€ ai๋„ ์นœ๊ตฌ๊ด€๊ณ„์ด๋‹ค. 

 

์ถœ๋ ฅ 

 

์ฒซ์งธ ์ค„์— ์ƒ๊ทผ์ด์˜ ๊ฒฐํ˜ผ์‹์— ์ดˆ๋Œ€ํ•˜๋Š” ๋™๊ธฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

- my solution

import sys

def friend(graph, start):
    queue=graph.get(start) #์ž์‹ ์˜ ์นœ๊ตฌ
    visited=[start]

    while queue:
        a=queue.pop(0)
        visited.append(a) # ์ž์‹ ์˜ ์นœ๊ตฌ
        visited+=graph.get(a) # ์นœ๊ตฌ์˜ ์นœ๊ตฌ

    result=len(set(visited))-1 # ๊ฒฐํ˜ผ์‹์— ์ดˆ๋Œ€ํ•  ์‚ฌ๋žŒ์˜ ์ˆ˜
    return result


if __name__=='__main__':
    n=int(input())
    m=int(input())

    graph={}
    for i in range(n):
        graph[i+1]=[]

    for i in range(m):
        x,y=map(int, sys.stdin.readline().split())
        graph[x].append(y)
        graph[y].append(x)

    result=friend(graph, 1)
    print(result)

 

ํ’€๋ฉด์„œ๋„ ์ด์ƒํ–ˆ์ง€๋งŒ ๋‹ค ํ’€๊ณ ๋„ ์ด์ƒํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋ฌธ์ œ๋ผ ๋ณด๊ณ  ๋“ค์–ด๊ฐ”์ง€๋งŒ ๋‚œ... ๊ทธ๋ ‡๊ฒŒ ํ’€์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊นŠ์ด๋ฅผ ์„ธ์„œ ๊นŠ์ด๊ฐ€ 3 ์ด์ƒ ์ผ ๋•Œ break๋ฅผ ๊ฑธ๊ณ  ์‹ถ๋‹ค๋Š” ๊ฒƒ์ด ์ฒซ ๋ฒˆ์งธ ์ƒ๊ฐ์ด์—ˆ์œผ๋‚˜, ์ƒ๊ฐ๋Œ€๋กœ ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์‰ฌ์šด ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ€๋ฒ„๋ ธ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด๋ฅผ ๋ด๋„ ์Œ... ์•„์ง ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. ๊ทธ๋ž˜์„œ ์ผ๋ถ€๋Ÿฌ ํ•จ์ˆ˜ ๋ช…๋„ friend๋กœ ์ง€์—ˆ๋‹ค...

 

  • friend
    - ์ž์‹ ์˜ ์นœ๊ตฌ๋ฅผ queue์— ๋„ฃ๊ณ , visited์—๋Š” start๋งŒ ๋„ฃ์Œ
    - queue๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต: ์ฒซ ๋ฒˆ์งธ๋ฅผ pop ํ•˜๊ณ  ๊ทธ ๊ฐ’๊ณผ ๊ทธ๋ž˜ํ”„์—์„œ ๊ทธ ๊ฐ’์„ key๊ฐ’์œผ๋กœ ํ•œ value๋ฅผ ์ถ”๊ฐ€
    - result: visited๋ฅผ set ํ•˜์—ฌ ์ค‘๋ณต์„ ์—†์•ค ํ›„ ์‹œ์ž‘ ์ •์ ์ธ 1์„ ๋บ€ ๊ธธ์ด
  • main
    - ์ž…๋ ฅ
    - ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ถ”๊ฐ€

 

๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ํ’€์ด๋Š” ์œ„์™€ ๊ฐ™๋‹ค. ์นœ๊ตฌ์˜ ์นœ๊ตฌ๊นŒ์ง€ ์ฐพ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ, ์ฒ˜์Œ์— ๋‚˜์˜ ์นœ๊ตฌ๋ฅผ queue์— ๋„ฃ๊ณ  queue์— ๋“  ๊ฐ’์— ๋Œ€ํ•ด์„œ๋งŒ ํ•œ ๋ฒˆ ๋” ์ฐพ์•„์ฃผ๋ฉด ์นœ๊ตฌ์˜ ์นœ๊ตฌ๋ฅผ ๋‹ค ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€...! ใ…œ_ใ…œ ์™œ ์ด๋ ‡๊ฒŒ ์‰ฝ๊ฒŒ ํ’€๋ฉด ์•ˆ ๋˜๋Š” ๊ฑด๊ฐ€์š”... ใ… ใ… 


์ƒ๊ฐ๐Ÿค”