๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Coding Test/Algorithms

[๋ฐฑ์ค€] 1012. ์œ ๊ธฐ๋† ๋ฐฐ์ถ”/Python - Silver 2

by The Future Engineer, Lucy 2025. 2. 6.
728x90
๋ฐ˜์‘ํ˜•

โ“๋ฌธ์ œ

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

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

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

๋ถ„๋ฅ˜

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

 

๋ฌธ์ œ ์„ค๋ช…

์ฐจ์„ธ๋Œ€ ์˜๋†์ธ ํ•œ๋‚˜๋Š” ๊ฐ•์›๋„ ๊ณ ๋žญ์ง€์—์„œ ์œ ๊ธฐ๋† ๋ฐฐ์ถ”๋ฅผ ์žฌ๋ฐฐํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ๋†์•ฝ์„ ์“ฐ์ง€ ์•Š๊ณ  ๋ฐฐ์ถ”๋ฅผ ์žฌ๋ฐฐํ•˜๋ ค๋ฉด ๋ฐฐ์ถ”๋ฅผ ํ•ด์ถฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•œ๋‚˜๋Š” ํ•ด์ถฉ ๋ฐฉ์ง€์— ํšจ๊ณผ์ ์ธ ๋ฐฐ์ถ”ํฐ์ง€๋ ์ด๋ฅผ ๊ตฌ์ž…ํ•˜๊ธฐ๋กœ ๊ฒฐ์‹ฌํ•œ๋‹ค. ์ด ์ง€๋ ์ด๋Š” ๋ฐฐ์ถ”๊ทผ์ฒ˜์— ์„œ์‹ํ•˜๋ฉฐ ํ•ด์ถฉ์„ ์žก์•„ ๋จน์Œ์œผ๋กœ์จ ๋ฐฐ์ถ”๋ฅผ ๋ณดํ˜ธํ•œ๋‹ค. ํŠนํžˆ, ์–ด๋–ค ๋ฐฐ์ถ”์— ๋ฐฐ์ถ”ํฐ์ง€๋ ์ด๊ฐ€ ํ•œ ๋งˆ๋ฆฌ๋ผ๋„ ์‚ด๊ณ  ์žˆ์œผ๋ฉด ์ด ์ง€๋ ์ด๋Š” ์ธ์ ‘ํ•œ ๋‹ค๋ฅธ ๋ฐฐ์ถ”๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์–ด, ๊ทธ ๋ฐฐ์ถ”๋“ค ์—ญ์‹œ ํ•ด์ถฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ํ•œ ๋ฐฐ์ถ”์˜ ์ƒํ•˜์ขŒ์šฐ ๋„ค ๋ฐฉํ–ฅ์— ๋‹ค๋ฅธ ๋ฐฐ์ถ”๊ฐ€ ์œ„์น˜ํ•œ ๊ฒฝ์šฐ์— ์„œ๋กœ ์ธ์ ‘ํ•ด์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

ํ•œ๋‚˜๊ฐ€ ๋ฐฐ์ถ”๋ฅผ ์žฌ๋ฐฐํ•˜๋Š” ๋•…์€ ๊ณ ๋ฅด์ง€ ๋ชปํ•ด์„œ ๋ฐฐ์ถ”๋ฅผ ๊ตฐ๋ฐ๊ตฐ๋ฐ ์‹ฌ์–ด ๋†“์•˜๋‹ค. ๋ฐฐ์ถ”๋“ค์ด ๋ชจ์—ฌ์žˆ๋Š” ๊ณณ์—๋Š” ๋ฐฐ์ถ”ํฐ์ง€๋ ์ด๊ฐ€ ํ•œ ๋งˆ๋ฆฌ๋งŒ ์žˆ์œผ๋ฉด ๋˜๋ฏ€๋กœ ์„œ๋กœ ์ธ์ ‘ํ•ด์žˆ๋Š” ๋ฐฐ์ถ”๋“ค์ด ๋ช‡ ๊ตฐ๋ฐ์— ํผ์ ธ์žˆ๋Š”์ง€ ์กฐ์‚ฌํ•˜๋ฉด ์ด ๋ช‡ ๋งˆ๋ฆฌ์˜ ์ง€๋ ์ด๊ฐ€ ํ•„์š”ํ•œ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐ์ถ”๋ฐญ์ด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉด ์ตœ์†Œ 5๋งˆ๋ฆฌ์˜ ๋ฐฐ์ถ”ํฐ์ง€๋ ์ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 0์€ ๋ฐฐ์ถ”๊ฐ€ ์‹ฌ์–ด์ ธ ์žˆ์ง€ ์•Š์€ ๋•…์ด๊ณ , 1์€ ๋ฐฐ์ถ”๊ฐ€ ์‹ฌ์–ด์ ธ ์žˆ๋Š” ๋•…์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

1 1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 1 1 0 0 0 1 1 1
0 0 0 0 1 0 0 1 1 1

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

BFS์™€ DFS ์ค‘์— ๋ฌด์—‡์œผ๋กœ ํ’€์ง€ ๊ณ ๋ฏผํ–ˆ๋Š”๋ฐ ์–ด์ œ ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ์„ ๋•Œ BFS๋กœ ํ’€์—ˆ๋˜ ๊ฒŒ ๋” ๊ฐ„๋‹จํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์•„ BFS๋กœ ํ’€์—ˆ๋‹ค.

visited ๋ฐฐ์—ด์„ ๋”ฐ๋กœ ๋‘๊ธฐ ๋ณด๋‹ค๋Š” graph์—์„œ ๋ฐฐ์ถ”๊ฐ€ ์‹ฌ์–ด์ ธ์žˆ๋Š” ๋•…์„ 0์œผ๋กœ ๋ฐ”๊ฟ”์„œ ๋ฐฉ๋ฌธํ–ˆ์Œ์„ ํ‘œ์‹œํ•ด์ฃผ์—ˆ๋‹ค. ์ƒํ•˜์ขŒ์šฐ๋ฅผ ๋‹ค ๋‘˜๋Ÿฌ๋ณธ ํ›„ ๋” ์ด์ƒ ์ธ์ ‘ํ•œ ๋ฐฐ์ถ”๊ฐ€ ์—†๋‹ค๋ฉด res[t]๋ฅผ 1 ์ฆ๊ฐ€ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ฒซ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—๋Š” ๋ฐฐ์ถ”ํฐ์ง€๋ ์ด๊ฐ€ 5๋งˆ๋ฆฌ์ด๋‹ค.

๐Ÿ’ป์ฝ”๋“œ

import sys
from collections import deque

input = sys.stdin.readline

T = int(input())
res = [0] * T
for t in range(T):
    M, N, K = map(int, input().split())
    graph = [[0 for _ in range(N)] for _ in range(M)]

    for _ in range(K):
        x, y = map(int, input().split())
        graph[x][y] = 1


    def bfs(x, y):
        q = deque()
        q.append((x, y))
        dx = [-1, 1, 0, 0]
        dy = [0, 0, -1, 1]
        while q:
            cx, cy = q.popleft()

            for i in range(4):
                nx, ny = cx + dx[i], cy + dy[i]
                if 0 <= nx < M and 0 <= ny < N and graph[nx][ny] == 1:
                    graph[nx][ny] = 0
                    q.append((nx, ny))

        res[t] += 1

    for x in range(M):
        for y in range(N):
            if graph[x][y] == 1:
                bfs(x, y)

print(*res, sep='\n')

๐Ÿ“ํ›„๊ธฐ

์–ด์ œ ํ’€์—ˆ๋˜ ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ์™€ ๋น„์Šทํ•œ ๋ฌธ์ œ์—ฌ์„œ ๋นจ๋ฆฌ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์Šฌ์Šฌ ๊ณจ๋“œ ๋ฌธ์ œ๋„ ํ’€์–ด์•ผ์ง€..

2025.02.05 - [Coding Test/Algorithms] - [๋ฐฑ์ค€] 2667. ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ/Python - Silver 1

 

[๋ฐฑ์ค€] 2667. ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ/Python - Silver 1

โ“๋ฌธ์ œhttps://www.acmicpc.net/problem/2667์„ฑ๋Šฅ ์š”์•ฝ๋ฉ”๋ชจ๋ฆฌ: 108548 KB, ์‹œ๊ฐ„: 92 ms๋ถ„๋ฅ˜๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰, ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰, ๊ทธ๋ž˜ํ”„ ์ด๋ก , ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋ฌธ์ œ ์„ค๋ช…๊ณผ ๊ฐ™์ด ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ์ง€๋„๊ฐ€ ์žˆ๋‹ค. 1์€ ์ง‘์ด

lucy-devblog.tistory.com

 

728x90
๋ฐ˜์‘ํ˜•