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

2025. 2. 5. 15:40ยทCoding Test/Algorithms

โ“๋ฌธ์ œ

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

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

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

๋ถ„๋ฅ˜

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

 

๋ฌธ์ œ ์„ค๋ช…

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

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

๊ฐ ๋‹จ์ง€์— ์†ํ•˜๋Š” ์ง‘์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ์ด๋ฏ€๋กœ ๊ฐ€์žฅ ๋จผ์ € DFS์ธ์ง€ BFS์ธ์ง€ ์ƒ๊ฐํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฌธ์ œ๋Š” DFS์™€ BFS ๋‘˜ ๋‹ค ๊ฐ€๋Šฅํ•˜๋‹ค.

๋จผ์ €, ์ง‘์ด ์žˆ๋Š” ๊ณณ์„ ์ฐพ๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒํ•˜์ขŒ์šฐ๋กœ ๋‘˜๋Ÿฌ๋ณด๋ฉฐ ์ง‘์ด ์žˆ๋Š” ๊ณณ์ด๋ผ๋ฉด cnt๋ฅผ 1 ์ฆ๊ฐ€ํ•œ๋‹ค. ๋งŒ์•ฝ ์ฃผ๋ณ€์— ๋” ์ด์ƒ ์ง‘์ด ์žˆ๋Š” ๊ณณ์ด ์—†๋‹ค๋ฉด cnt๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ์ƒˆ๋กœ์šด ๋‹จ์ง€๋ฅผ ์ฐพ์•„ ์•ž์„œ ์ง„ํ–‰ํ•œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

์ถœ๋ ฅ ์‹œ์—๋Š” ๊ฐ ๋‹จ์ง€์˜ ์ˆ˜์™€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๊ฐ ๋‹จ์ง€์˜ ์ง‘์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ’ป์ฝ”๋“œ

DFS๋กœ ํ‘ผ ํ’€์ด

import sys

input = sys.stdin.readline

N = int(input())
graph = [list(map(int, list(input().strip()))) for _ in range(N)]
res = []

def dfs(y, x):
    graph[y][x] = 0
    cnt = 1
    if 0 <= y + 1 < N and graph[y+1][x] == 1:
            cnt += dfs(y+1, x)
    if 0 <= x + 1 < N and graph[y][x+1] == 1:
            cnt += dfs(y, x+1)
    if 0 <= x - 1 < N and graph[y][x-1] == 1:
            cnt += dfs(y, x-1)
    if 0 <= y - 1 < N and graph[y-1][x] == 1:
            cnt += dfs(y-1, x)

    return cnt

for y in range(N):
    for x in range(N):
        if graph[y][x] == 1:
            res.append(dfs(y, x))

res.sort()
print(len(res))
print(*res, sep='\n')

BFS๋กœ ํ‘ผ ํ’€์ด

import sys
from collections import deque

input = sys.stdin.readline

N = int(input())
graph = [list(map(int, list(input().strip()))) for _ in range(N)]
dy = [-1, 1, 0, 0]
dx = [0, 0, -1, 1]
res = []

def bfs(y, x):
    cnt = 1
    q = deque()
    q.append((y, x))
    graph[y][x] = 0
    while q:
        cy, cx = q.popleft()
        for i in range(4):
            ny, nx = cy + dy[i], cx + dx[i]
            if 0 <= ny < N and 0 <= nx < N and graph[ny][nx] == 1:
                graph[ny][nx] = 0
                q.append((ny, nx))
                cnt += 1

    return cnt

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

res.sort()
print(len(res))
print(*res, sep='\n')

๐Ÿ“ํ›„๊ธฐ

DFS์™€ BFS ์ค‘์— ๋ญ˜๋กœ ํ’€์–ด์•ผ ํ• ์ง€ ๊ณ ๋ฏผํ–ˆ๋Š”๋ฐ ๊ทธ๋Ÿด ํ•„์š”๊ฐ€ ์—†์—ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋‘˜ ๋‹ค ์“ธ ์ˆ˜ ์žˆ์—ˆ๋‹ค..๐Ÿฅฒ

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

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

[๋ฐฑ์ค€] 7569. ํ† ๋งˆํ† /Python - Gold5  (2) 2025.02.09
[๋ฐฑ์ค€] 1012. ์œ ๊ธฐ๋† ๋ฐฐ์ถ”/Python - Silver 2  (0) 2025.02.06
[๋ฐฑ์ค€] 24480. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ 2/Python - Silver 2  (0) 2025.02.04
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ/Python - Lv.2  (0) 2025.01.27
[๋ฐฑ์ค€] 1753. ์ตœ๋‹จ๊ฒฝ๋กœ/Python - ๊ณจ๋“œ4  (0) 2025.01.20
'Coding Test/Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 7569. ํ† ๋งˆํ† /Python - Gold5
  • [๋ฐฑ์ค€] 1012. ์œ ๊ธฐ๋† ๋ฐฐ์ถ”/Python - Silver 2
  • [๋ฐฑ์ค€] 24480. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ 2/Python - Silver 2
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ/Python - Lv.2
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future๐Ÿ’•
    The Engineer, Lucy
    • Instagram
    • GitHub
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (152) N
      • Computer Science (17)
        • Data Structure (0)
        • Algorithms (1)
        • Operating System (3)
        • Network (11)
        • Database System (2)
      • Coding Test (72) N
        • Algorithms (64) N
        • SQL (7)
      • Infra (6)
      • Cloud (21)
        • AWS (2)
        • GCP (3)
        • Docker (4)
        • Kubernetes (12)
      • Linux (26)
      • NGINX (1)
      • CICD (3)
      • IaC (1)
      • ETC (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

  • ๋งํฌ

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

  • ํƒœ๊ทธ

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

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
The Engineer, Lucy
[๋ฐฑ์ค€] 2667. ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ/Python - Silver 1
์ƒ๋‹จ์œผ๋กœ

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