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

2022. 6. 15. 04:03ยท๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]

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

 

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

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

www.acmicpc.net

๊ตฌ์—ญ์˜ ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ ๊ทผ๋ฐ ์ด์ œ ์ƒ‰์•ฝ์„ ๊ณ๋“ค์ธ

dfs๋‚˜ bfs ์ค‘ ํ•˜๋‚˜๋ฅผ ํƒํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ๋œ๋‹ค. 

ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ •๋ง ๋‹ค์–‘ํ•˜์ง€๋งŒ ๊ทธ์ค‘ ํ•˜๋‚˜๋งŒ ์ž‘์„ฑํ•จ.

 

๋ฌธ์ œ ํ’€์ด

์ด ๋ฌธ์ œ๋Š” ์ƒ‰์•ฝ์ผ๋•Œ์™€ ์ƒ‰์•ฝ์ด ์•„๋‹ ๋•Œ ๊ฐ๊ฐ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ƒ์— ํ’€์ด๊ฐ€ ๋‹ค๋ฅผ ๊ฒƒ์ด๋‹ค.

๋‚˜๋Š” ๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•ด์„œ ์ƒ‰์•ฝ์ผ ๋•Œ(R == G) ๋”ฐ๋กœ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ํƒ์ƒ‰ํ•˜๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค.

 

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์ƒ‰์•ฝ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ํƒ์ƒ‰์„ ํ•ด์ฃผ๊ณ 

์›๋ž˜ ๋ฐฐ์—ด์—์„œ R์„ G๋กœ ๋ณ€๊ฒฝ(๋˜๋Š” G๋ฅผ R๋กœ) ํ›„ ํƒ์ƒ‰์„ ๋˜ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด visited ๋ฐฐ์—ด์„ ๋”ฐ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ 

๊ทธ๋ƒฅ ์›๋ž˜ ๋ฐฐ์—ด์—์„œ ๋ฌธ์ž๋ฅผ R, G, B๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฌธ์ž(Z)๋กœ ๋ณ€๊ฒฝ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์—ˆ๋‹ค.

 

์ „์ฒด ์ฝ”๋“œ

import sys
import copy
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
N = int(input())
rg_count = 0
r_count = 0
g_count = 0
b_count = 0

greed = []
for _ in range(N):
    greed.append(list(map(str,input().rstrip())))
rg_greed = copy.deepcopy(greed)

def RedGreenEqual(x,y):
    if x < 0 or x >= N or y < 0 or y >= N:
        return False

    if rg_greed[x][y] == 'R' or rg_greed[x][y] == 'G':
        rg_greed[x][y] = 'Z'
        RedGreenEqual(x + 1, y)
        RedGreenEqual(x - 1, y)
        RedGreenEqual(x, y + 1)
        RedGreenEqual(x, y - 1)
        return True
    return False

def ColorArea(x,y,color):

    if x < 0 or x >= N or y < 0 or y >= N:
        return False

    if greed[x][y] == color:
        greed[x][y] = 'Z'
        ColorArea(x + 1, y, color)
        ColorArea(x - 1, y, color)
        ColorArea(x, y + 1, color)
        ColorArea(x, y - 1, color)
        return True
    return False

for i in range(N):
    for j in range(N):
        if ColorArea(i,j,'R') == True:
            r_count += 1
        if ColorArea(i,j,'G') == True:
            g_count += 1
        if ColorArea(i,j,'B') == True:
            b_count += 1

for i in range(N):
    for j in range(N):
        if RedGreenEqual(i,j) == True:
            rg_count += 1

print(r_count + g_count + b_count, rg_count + b_count)

 

์ฃผ์˜ํ•  ์ ์€ 2์ฐจ์› ๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•  ๋•Œ deepcopy๋กœ ๋ณต์‚ฌํ•ด์ค˜์•ผ ํ•œ๋‹ค. 

๋˜ํ•œ sys.setrecursionlimit๋กœ ์žฌ๊ท€ ๊นŠ์ด ์ œํ•œ์„ ๋Š˜๋ ค์ค˜์•ผ ํ•œ๋‹ค.

๊ธฐ์กด ์žฌ๊ท€ ๊นŠ์ด(1000)๋กœ๋Š” RecursionError๋œธ.

 

๋ค์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋ฉด ๊ฐ™์€ ์ฝ”๋“œ์ธ๋ฐ pypy์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๊ฐ€ ๋œฌ๋‹ค.

์ฐพ์•„๋ณด๋‹ˆ๊นŒ pypy์—์„œ๋Š” ์žฌ๊ท€์— ์•ฝํ•˜๋‹ค๊ณ  ํ•จ

 

 

'๐Ÿงฉ Problem Solving > [๋ฐฑ์ค€]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 11404 ํ”Œ๋กœ์ด๋“œ (python ํŒŒ์ด์ฌ)  (0) 2022.06.18
[๋ฐฑ์ค€] 17070 ํŒŒ์ดํ”„ ์˜ฎ๊ธฐ๊ธฐ 1 (python ํŒŒ์ด์ฌ)  (0) 2022.06.16
[๋ฐฑ์ค€] 1655 ๊ฐ€์šด๋ฐ๋ฅผ๋งํ•ด์š” (python ํŒŒ์ด์ฌ)  (0) 2022.06.14
[๋ฐฑ์ค€] 7569 ํ† ๋งˆํ†  (python ํŒŒ์ด์ฌ)  (0) 2022.06.14
[๋ฐฑ์ค€] 13549 ์ˆจ๋ฐ”๊ผญ์งˆ3 (python ํŒŒ์ด์ฌ)  (0) 2022.06.13
'๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 11404 ํ”Œ๋กœ์ด๋“œ (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 17070 ํŒŒ์ดํ”„ ์˜ฎ๊ธฐ๊ธฐ 1 (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 1655 ๊ฐ€์šด๋ฐ๋ฅผ๋งํ•ด์š” (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 7569 ํ† ๋งˆํ†  (python ํŒŒ์ด์ฌ)
์ œ๋ด‰์•„
์ œ๋ด‰์•„
  • ์ œ๋ด‰์•„
    Overthinking
    ์ œ๋ด‰์•„
    fake it till you make it.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (106)
      • ๐Ÿงฉ Problem Solving (83)
        • [๋ฐฑ์ค€] (74)
        • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] (7)
        • [SW Expert Academy] (1)
        • [์•Œ๊ณ ๋ฆฌ์ฆ˜ for PS] (1)
      • ๐Ÿ“ฆ Data Structure (2)
      • ๐Ÿ“œ Language (14)
        • [python] (14)
      • ๐Ÿ–ค Git (1)
      • ๐ŸŒ† ์ผ์ƒ (4)
        • ๐Ÿ’ฌ ๋ฒฝ๋ณด๊ณ  ๋งํ•˜๊ธฐ (4)
      • ๐Ÿ—„๏ธ ๊ธฐํƒ€ (2)
      • ๐Ÿ”ต css (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ถ„ํ•  ์ •๋ณต
    boj
    Bruteforce
    ์ •์ฒ˜๊ธฐ
    ๋ƒ…์ƒ‰
    ํŒฐ๋ฆฐ๋“œ๋กฌ
    Python
    ๊ทธ๋ฆฌ๋””
    ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ
    imos
    slicing
    ํˆฌํฌ์ธํ„ฐ
    ํŒŒ์ด์ฌ
    ํ”Œ๋กœ์ด๋“œ์›Œ์…œ
    ๋ถ€๋ถ„ํ•ฉ
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    DP
    BFS
    ์Šคํƒ
    ๋ฐฑํŠธ๋ž˜ํ‚น
    ์žฌ๊ท€
    ๋‹ค์ต์ŠคํŠธ๋ผ
    ๊ตฌํ˜„
    ์œ„์ƒ์ •๋ ฌ
    ๋ˆ„์ ํ•ฉ
    ๋ฐ๋ธŒ์ฝ”์Šค
    ๋ฐฑ์ค€
    DFS
    SWEA
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

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

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