๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 11724_์—ฐ๊ฒฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜

๋ฟŒ์•ผ._. 2022. 1. 26. 22:14

Silver II

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

<์—ฐ๊ฒฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜>

๋ฌธ์ œ 

 

๋ฐฉํ–ฅ ์—†๋Š” ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์—ฐ๊ฒฐ ์š”์†Œ (Connected Component)์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

 

์ž…๋ ฅ

 

์ฒซ์งธ ์ค„์— ์ •์ ์˜ ๊ฐœ์ˆ˜ N๊ณผ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ M์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์— ๊ฐ„์„ ์˜ ์–‘ ๋์  u์™€ v๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ u, v ≤ N, u ≠ v) ๊ฐ™์€ ๊ฐ„์„ ์€ ํ•œ ๋ฒˆ๋งŒ ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ 

 

์ฒซ์งธ ์ค„์— ์—ฐ๊ฒฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

- my solution

import sys

def bfs(graph, start,visited):
    queue=[start]

    while queue:
        x=queue.pop(0)
        if x not in visited: # ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด
            visited.append(x) # ๋ฐฉ๋ฌธ
            queue+=graph.get(x)
            queue=list(set(queue)) # ์ค‘๋ณต ์ œ๊ฑฐ


if __name__=='__main__':
    n,m=map(int, sys.stdin.readline().split())

    graph={}

    for i in range(n): #init
        graph[i+1]=[]

    for i in range(m): #๋ฐฉํ–ฅ ์—†๋Š” ๊ทธ๋ž˜ํ”„
        x,y=map(int, sys.stdin.readline().split())
        graph[x].append(y)
        graph[y].append(x)

    visited=[]
    result=0
    i=1
    while len(visited)!=n: # ์—ฐ๊ฒฐ ์š”์†Œ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ
        if i not in visited:
            bfs(graph, i,visited)
            result += 1
        i+=1

    print(result)

 

  • bfs
    - queue๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต: ์ ค ์ฒ˜์Œ ๊ฐ’ pop ํ•ด์„œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด visited์— ์ถ”๊ฐ€ ๋ฐ queue์— ์ถ”๊ฐ€ (set์„ ํ™œ์šฉํ•˜์—ฌ ์ค‘๋ณต ์ œ๊ฑฐ)
  • main
    - ์ž…๋ ฅ
    - ๋ฐฉํ–ฅ ์—†๋Š” ๊ทธ๋ž˜ํ”„: ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ถ”๊ฐ€
    - ์—ฐ๊ฒฐ ์š”์†Œ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ: visited ๊ธธ์ด๊ฐ€ ์ •์  ๊ฐœ์ˆ˜์™€ ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด ๋ฐ˜๋ณต -> ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด bfs ํ˜ธ์ถœ ๋ฐ result +1

์ƒ๊ฐ๐Ÿค”

 

์ฒ˜์Œ์— ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ set(queue)๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„ ๊ณ„์† ์œ„์น˜ ๋ฐ”๊ฟ”์„œ ์ œ์ถœํ•ด๋ดค๋Š”๋ฐ ์‹คํŒจ...

๋ชจ๋ฅด๊ฒ ๋‹ค ํ•ด์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ฝ”๋“œ๋ฅผ ๋ดค๋Š”๋ฐ ์•„์ฐจ..

set(queue) ํ•œ ๊ฒƒ์„ ๋ณ€์ˆ˜์— ๋Œ€์ž…์„ ์•ˆ ํ–ˆ๋‹ค ,,,

์ด๋Ÿฐ ์‹ค์ˆ˜๋ฅผ ํ•˜๋‹ค๋‹ˆ.. ์ด ์ฝ”๋“œ๋ฅผ ์ œ์ถœํ•˜๋‹ˆ ๋ฐ”๋กœ ํ†ต๊ณผ ์™„๋ฃŒ -!

 

๋‹จ์‹œ๊ฐ„์— ๋งŽ์€ ์ œ์ถœ...