๋ฐฑ์ค€ 10026 | ์ ๋ก์ƒ‰์•ฝ [ํŒŒ์ด์ฌ]

2022. 8. 9. 23:43ยท์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ
https://www.acmicpc.net/problem/10026

 

 

ํ’€์ด

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

 

์ฝ”๋“œ

import sys, copy
from collections import deque
sys.setrecursionlimit(10000)
input = sys.stdin.readline

N = int(input())
grid = [list(input().rstrip()) for _ in range(N)]
visited = [[False]*N for _ in range(N)]
wasd = ((0, -1), (0, 1), (-1, 0), (1, 0))

def dfs(x, y, color):
    visited[y][x] = True

    for hx, hy in wasd:
        hx += x
        hy += y

        if (hx >= 0 and hx < N) and (hy >= 0 and hy < N):
            if not visited[hy][hx] and grid[hy][hx] == color:
                dfs(hx, hy, color)

def bfs(blindess):
    queue = deque()
    copy_visited = copy.deepcopy(visited)

    cnt = 0
    for i in range(N):
        for j in range(N):
            if not copy_visited[i][j]:
                queue.append([j, i])
                copy_visited[i][j] = True

                while queue:
                    xx, yy = queue.popleft()

                    for hx, hy in wasd:
                        hx += xx
                        hy += yy

                        if (hx >= 0 and hx < N) and (hy >= 0 and hy < N):
                            if blindess and (not copy_visited[hy][hx]):
                                if grid[yy][xx] == 'G' or grid[yy][xx] == 'R':
                                    if grid[hy][hx] == 'G' or grid[hy][hx] == 'R':
                                        queue.append([hx, hy])
                                        copy_visited[hy][hx] = True
                                else:
                                    if grid[hy][hx] == grid[yy][xx]:
                                        queue.append([hx, hy])
                                        copy_visited[hy][hx] = True
                            else:
                                if not copy_visited[hy][hx] and grid[hy][hx] == grid[yy][xx]:
                                    queue.append([hx, hy])
                                    copy_visited[hy][hx] = True

                cnt += 1

    return cnt

cnt = 0
for i in range(N):
    for j in range(N):
        if not visited[i][j]:
            dfs(j, i, grid[i][j])
            cnt += 1

for i in range(N):
    for j in range(N):
        if grid[i][j] == 'G':
            grid[i][j] = 'R'

visited = [[False]*N for _ in range(N)]
blindcnt = 0
for i in range(N):
    for j in range(N):
        if not visited[i][j]:
            dfs(j, i, grid[i][j])
            blindcnt += 1

print(cnt, blindcnt)

# bfs ์ •๋‹ต
# print(bfs(False))
# print(bfs(True))
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

3190 - ๋ฑ€ [์„ฑ๊ณต(๋ฐ˜๋ก€ํžŒํŠธ)|02:14:43]  (0) 2024.08.09
๋ฐฑ์ค€ 12094 - 2048 (Hard) [ํŒŒ์ด์ฌ]  (0) 2022.11.22
๋ฐฑ์ค€ 12100 - 2048 (Easy) [ํŒŒ์ด์ฌ]  (1) 2022.11.20
๋ฐฑ์ค€ 1541 - ์žƒ์–ด๋ฒ„๋ฆฐ ์•”ํ˜ธ [์ž๋ฐ”]  (0) 2022.10.31
๋ฐฑ์ค€ 2206 | ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ [ํŒŒ์ด์ฌ]  (0) 2022.08.09
'์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ฐฑ์ค€ 12094 - 2048 (Hard) [ํŒŒ์ด์ฌ]
  • ๋ฐฑ์ค€ 12100 - 2048 (Easy) [ํŒŒ์ด์ฌ]
  • ๋ฐฑ์ค€ 1541 - ์žƒ์–ด๋ฒ„๋ฆฐ ์•”ํ˜ธ [์ž๋ฐ”]
  • ๋ฐฑ์ค€ 2206 | ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ [ํŒŒ์ด์ฌ]
์œจ๋ฌด;
์œจ๋ฌด;
  • ์œจ๋ฌด;
    ๐ŸฅŠ
    ์œจ๋ฌด;
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (65)
      • ๊ฐœ๋ฐœ (30)
        • ์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค (13)
        • ์šด์˜์ฒด์ œ (12)
      • ๊ฐœ๋ฐœ์„œ์  (2)
        • ์ž๋ฐ”-์Šคํ”„๋ง ์‹ค์šฉ์ฃผ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (2)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ (28)
      • ๊ฒŒ์ž„๊ฐœ๋ฐœ (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํŒŒ์ด์ฌ
    ์ธ๋””๊ฒŒ์ž„
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ์…€๋ฃฐ๋Ÿฌ์˜คํ† ๋งˆํƒ€
    BFS
    ๊ฒŒ์ž„๊ฐœ๋ฐœ
    ๊ฐœ๋ฐœ
    2048
    ์ด๊ฒƒ์ดC++์ด๋‹ค
    ๋ฐฑ์ค€
    ์ฝ”๋”ฉ
    python
    C++
    dfs
    ์šฐํ…Œ์ฝ”
    ์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค
    ๊ฐœ๋ฐœ์—ฐ์Šต
    ์ ˆ์ฐจ์ ์ƒ์„ฑ
    2048(Hard)
    ์ž๋ฐ”
    ๊ฒŒ์ž„
    bsp
    ๋กœ๊ทธ
    ๋กœ๊ทธ๋ผ์ดํฌ
    ์ด๋™์ƒ์„ฑ์ž
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์œจ๋ฌด;
๋ฐฑ์ค€ 10026 | ์ ๋ก์ƒ‰์•ฝ [ํŒŒ์ด์ฌ]
์ƒ๋‹จ์œผ๋กœ

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