J1Yun
ZU-TECHLOG
J1Yun
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ“‘ Category (135)
    • Algorithm (61)
      • ๐Ÿ“š Concept (6)
      • ๐Ÿ“˜ Baekjoon Judge (53)
      • ๐Ÿ“— Programmers (2)
    • Computer Science (42)
      • ๐Ÿ”’ Operating System (14)
      • ๐Ÿ“ก Network (15)
      • ๐Ÿ’พ Database (8)
      • ๐Ÿงฉ Design Pattern (4)
      • ๐Ÿ”‘ Security (1)
    • Activities (12)
      • ๐Ÿฆ ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ 9๊ธฐ (6)
      • ๐Ÿ’ป SW๋งˆ์—์ŠคํŠธ๋กœ 13๊ธฐ (6)
    • Infra (1)
      • โ˜๏ธ AWS (1)
    • Languages (1)
      • ๐Ÿ’™ Python (1)
    • Backend (7)
      • ๐Ÿ”ต Django (4)
      • ๐ŸŸข Node.js (3)
    • Ect. (8)
      • ๐Ÿ’ฌ Talk (0)
      • ๐Ÿ—‚๏ธ ๊ฐœ๋ฐœ์ง๊ตฐ ์ทจ์—… ์ค€๋น„์ž๋ฃŒ (8)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.
J1Yun

ZU-TECHLOG

[BOJ] ๋ฐฑ์ค€ 10026๋ฒˆ ์ ๋ก์ƒ‰์•ฝ - ํŒŒ์ด์ฌ(Python)
Algorithm/๐Ÿ“˜ Baekjoon Judge

[BOJ] ๋ฐฑ์ค€ 10026๋ฒˆ ์ ๋ก์ƒ‰์•ฝ - ํŒŒ์ด์ฌ(Python)

728x90

๋ฌธ์ œ

์ ๋ก์ƒ‰์•ฝ์€ ๋นจ๊ฐ„์ƒ‰๊ณผ ์ดˆ๋ก์ƒ‰์˜ ์ฐจ์ด๋ฅผ ๊ฑฐ์˜ ๋А๋ผ์ง€ ๋ชปํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์ ๋ก์ƒ‰์•ฝ์ธ ์‚ฌ๋žŒ์ด ๋ณด๋Š” ๊ทธ๋ฆผ์€ ์•„๋‹Œ ์‚ฌ๋žŒ์ด ๋ณด๋Š” ๊ทธ๋ฆผ๊ณผ๋Š” ์ข€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

ํฌ๊ธฐ๊ฐ€ N×N์ธ ๊ทธ๋ฆฌ๋“œ์˜ ๊ฐ ์นธ์— R(๋นจ๊ฐ•), G(์ดˆ๋ก), B(ํŒŒ๋ž‘) ์ค‘ ํ•˜๋‚˜๋ฅผ ์ƒ‰์น ํ•œ ๊ทธ๋ฆผ์ด ์žˆ๋‹ค. ๊ทธ๋ฆผ์€ ๋ช‡ ๊ฐœ์˜ ๊ตฌ์—ญ์œผ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ๋Š”๋ฐ, ๊ตฌ์—ญ์€ ๊ฐ™์€ ์ƒ‰์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๋˜, ๊ฐ™์€ ์ƒ‰์ƒ์ด ์ƒํ•˜์ขŒ์šฐ๋กœ ์ธ์ ‘ํ•ด ์žˆ๋Š” ๊ฒฝ์šฐ์— ๋‘ ๊ธ€์ž๋Š” ๊ฐ™์€ ๊ตฌ์—ญ์— ์†ํ•œ๋‹ค. (์ƒ‰์ƒ์˜ ์ฐจ์ด๋ฅผ ๊ฑฐ์˜ ๋А๋ผ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๊ฐ™์€ ์ƒ‰์ƒ์ด๋ผ ํ•œ๋‹ค)

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ทธ๋ฆผ์ด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—

RRRBB
GGBBB
BBBRR
BBRRR
RRRRR

์ ๋ก์ƒ‰์•ฝ์ด ์•„๋‹Œ ์‚ฌ๋žŒ์ด ๋ดค์„ ๋•Œ ๊ตฌ์—ญ์˜ ์ˆ˜๋Š” ์ด 4๊ฐœ์ด๋‹ค. (๋นจ๊ฐ• 2, ํŒŒ๋ž‘ 1, ์ดˆ๋ก 1) ํ•˜์ง€๋งŒ, ์ ๋ก์ƒ‰์•ฝ์ธ ์‚ฌ๋žŒ์€ ๊ตฌ์—ญ์„ 3๊ฐœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. (๋นจ๊ฐ•-์ดˆ๋ก 2, ํŒŒ๋ž‘ 1)

๊ทธ๋ฆผ์ด ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ ๋ก์ƒ‰์•ฝ์ธ ์‚ฌ๋žŒ์ด ๋ดค์„ ๋•Œ์™€ ์•„๋‹Œ ์‚ฌ๋žŒ์ด ๋ดค์„ ๋•Œ ๊ตฌ์—ญ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 100)

๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ ์ค„์—๋Š” ๊ทธ๋ฆผ์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ ๋ก์ƒ‰์•ฝ์ด ์•„๋‹Œ ์‚ฌ๋žŒ์ด ๋ดค์„ ๋•Œ์˜ ๊ตฌ์—ญ์˜ ๊ฐœ์ˆ˜์™€ ์ ๋ก์ƒ‰์•ฝ์ธ ์‚ฌ๋žŒ์ด ๋ดค์„ ๋•Œ์˜ ๊ตฌ์—ญ์˜ ์ˆ˜๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ์ถœ๋ ฅํ•œ๋‹ค.

 

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

 

10026๋ฒˆ: ์ ๋ก์ƒ‰์•ฝ

์ ๋ก์ƒ‰์•ฝ์€ ๋นจ๊ฐ„์ƒ‰๊ณผ ์ดˆ๋ก์ƒ‰์˜ ์ฐจ์ด๋ฅผ ๊ฑฐ์˜ ๋А๋ผ์ง€ ๋ชปํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์ ๋ก์ƒ‰์•ฝ์ธ ์‚ฌ๋žŒ์ด ๋ณด๋Š” ๊ทธ๋ฆผ์€ ์•„๋‹Œ ์‚ฌ๋žŒ์ด ๋ณด๋Š” ๊ทธ๋ฆผ๊ณผ๋Š” ์ข€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ํฌ๊ธฐ๊ฐ€ N×N์ธ ๊ทธ๋ฆฌ๋“œ์˜ ๊ฐ ์นธ์— R(๋นจ๊ฐ•), G(์ดˆ๋ก)

www.acmicpc.net

 

๐Ÿ’ก ํ’€์ด ๋ฐ ์ฝ”๋“œ

from collections import deque
import copy

n = int(input())
graph = []
for _ in range(n):
    graph.append(list(input()))

dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
graph1 = copy.deepcopy(graph)

def bfs0(x, y):
    queue = deque()
    color = graph[x][y]
    queue.append((x, y))
    graph[x][y] = 0
    while queue:
        x, y = queue.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if nx<0 or ny<0 or nx>=n or ny>=n:
                continue
            if graph[nx][ny] != color:
                continue
            queue.append((nx, ny))
            graph[nx][ny] = 0

def bfs1(x, y):
    queue = deque()
    color = graph1[x][y]
    queue.append((x, y))
    graph1[x][y] = 0
    while queue:
        x, y = queue.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if nx<0 or ny<0 or nx>=n or ny>=n:
                continue
            if color == graph1[nx][ny] or {color, graph1[nx][ny]} == {'G', 'R'}:
                queue.append((nx, ny))
                graph1[nx][ny] = 0

count, count1 = 0, 0
for i in range(n):
    for j in range(n):
        if graph[i][j] != 0:
            bfs0(i,j)
            count += 1
        if graph1[i][j] != 0:
            bfs1(i,j)
            count1 += 1

print(count, count1)

 

  ์ ๋ก์ƒ‰์•ฝ์ธ ๊ฒฝ์šฐ(bfs1)์™€ ์•„๋‹Œ ๊ฒฝ์šฐ(bfs0) bfs ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง„ ๊ฐ์ด ์žˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์—ˆ์ง€๋งŒ ์ ๋ก์ƒ‰์•ฝ์ธ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด G์™€ R์„ ๊ฐ™์€ ๋ฌธ์ž๋กœ ํ†ต์ผ ์‹œํ‚ค๋Š” ๊ณผ์ •์—์„œ for๋ฌธ์ด ํ•˜๋‚˜ ๋” ์“ฐ์—ฌ์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„ ๊ทธ๋ƒฅ ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค๊ธฐ๋กœ ํ•˜์˜€๋‹ค. 

 

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

728x90

'Algorithm > ๐Ÿ“˜ Baekjoon Judge' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] ๋ฐฑ์ค€ 2473๋ฒˆ ์„ธ ์šฉ์•ก - ํŒŒ์ด์ฌ(Python)  (3) 2021.08.24
[BOJ] ๋ฐฑ์ค€ 2470๋ฒˆ ๋‘ ์šฉ์•ก - ํŒŒ์ด์ฌ(Python)  (0) 2021.08.24
[BOJ] ๋ฐฑ์ค€ 2468๋ฒˆ ์•ˆ์ „ ์˜์—ญ - ํŒŒ์ด์ฌ(Python)  (0) 2021.07.18
[BOJ] ๋ฐฑ์ค€ 2583๋ฒˆ ์˜์—ญ ๊ตฌํ•˜๊ธฐ - ํŒŒ์ด์ฌ(Python)  (0) 2021.07.17
[BOJ] ๋ฐฑ์ค€ 1697๋ฒˆ ์ˆจ๋ฐ”๊ผญ์งˆ - ํŒŒ์ด์ฌ(Python)  (0) 2021.07.15
    'Algorithm/๐Ÿ“˜ Baekjoon Judge' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€์ด๋‹ค
    • [BOJ] ๋ฐฑ์ค€ 2473๋ฒˆ ์„ธ ์šฉ์•ก - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 2470๋ฒˆ ๋‘ ์šฉ์•ก - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 2468๋ฒˆ ์•ˆ์ „ ์˜์—ญ - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 2583๋ฒˆ ์˜์—ญ ๊ตฌํ•˜๊ธฐ - ํŒŒ์ด์ฌ(Python)
    J1Yun
    J1Yun
    ๊ฐœ๋ฐœ ๊ด€๋ จ ๊ธฐ์ˆ  ๋ฐ ๊ณต๋ถ€ ๋‚ด์šฉ ๊ธฐ๋ก์žฅ

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