We will find a way, we always have.

-interstellar

Problem Solving/๋ฐฑ์ค€

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

Redddy 2022. 7. 14. 10:41

๐Ÿ”ˆ ๋ฌธ์ œ

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

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

 

๐Ÿ“์ž…๋ ฅ

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

 

๐Ÿ“‘์ถœ๋ ฅ

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

 

๐Ÿ“š ๋ฌธ์ œ ํ’€์ด

DFS๋ฅผ ํ†ตํ•ด ๊ฐ ๊ตฌ์—ญ์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ฒดํฌํ•ด์ฃผ๋ฉด ๋˜๋Š” ๋ฌธ์ œ์˜€๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ์ ‘ํ–ˆ๋˜ ๊ตฌ์—ญ๊ฐฏ์ˆ˜ ์„ธ๊ธฐ ๋ฌธ์ œ๋Š” 0 ๋˜๋Š” 1 ๋ฐ–์— ์—†์—ˆ๋Š”๋ฐ, ์ด ๋ฌธ์ œ์—์„œ๋Š” ์ด ์„ธ ๊ฐœ์˜ ์ƒ‰๊น”์ด ์žˆ์–ด DFS ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๋•Œ ์ธ์žํ•˜๋‚˜๋ฅผ ๋” ๋ฐ›์•„์™€ ์ฒดํฌํ•ด์ฃผ์—ˆ๋‹ค.

์ ๋ก์ƒ‰์•ฝ์ด ์•„๋‹Œ ์‚ฌ๋žŒ์€ R,G,B ๋ฅผ ์ „๋ถ€ ๊ตฌ๋ถ„ํ•˜์ง€๋งŒ ์ ๋ก์ƒ‰์•ฝ์ธ ์‚ฌ๋žŒ์€ R๊ณผ G์„ ๊ตฌ๋ถ„ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‘˜์„ ํ•˜๋‚˜๋กœ ์ฒดํฌํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

์ ๋ก์ƒ‰์•ฝ์˜ DFS ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๊ณ , ์ฒ˜์Œ ๋ฐ›์€ graph๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์ฃผ์ง€ ์•Š๊ณ , ๊ทธ๋ƒฅ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์ ๋ก์ƒ‰์•ฝ์ด ์•„๋‹Œ ์‚ฌ๋žŒ์˜ DFS ํ›„ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌํ•  ๋•Œ R๊ณผ G ๋Š” ์ „๋ถ€ ๊ฐ™์€ ๋ฌธ์ž๋กœ ๋ฐ”๊พธ์–ด ์ฃผ์—ˆ๋‹ค. 

 

๐Ÿ’ป ์ฝ”๋“œ

import sys
input = sys.stdin.readline

n=int(input())
graph = [list(map(str,input().rstrip())) for _ in range(n)]

def dfs(x,y,color):
    if x <0 or x>=n or y<0 or y>=n: # ๋ฒ”์œ„ ๋ฐ–์ด๋ผ๋ฉด 
        return False
    if graph[x][y] == color: # ํƒ์ƒ‰ ์‹œ์ž‘ ๋ถ€๋ถ„์˜ ์ƒ‰๊ณผ ๊ฐ™๋‹ค๋ฉด
    	# ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋Š” ์ ๋ก์ƒ‰์•ฝ ํƒ์ƒ‰์„ ์œ„ํ•ด b ๋˜๋Š” c ๋กœ ํ•จ.
        if color == 'B':
            graph[x][y] = 'b' # ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ
        elif color == 'G' or color == 'R':
            graph[x][y] = 'c' # R๊ณผ G ๋™์ผํ•œ ์ƒ‰์œผ๋กœ ๋ฐ”๊พธ๊ณ  ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ
        else:
            graph[x][y] = 'v' # ์ ๋ก์ƒ‰์•ฝ์˜ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ
        # ์ƒํ•˜์ขŒ์šฐ ํƒ์ƒ‰
        dfs(x+1, y,color)
        dfs(x,y+1,color)
        dfs(x-1,y,color)
        dfs(x,y-1,color)
        return True
    return False

nomal = 0
color = 0
# ์ ๋ก์ƒ‰์•ฝ์ด ์•„๋‹Œ ์‚ฌ๋žŒ ํƒ์ƒ‰
for i in range(n):
    for j in range(n):
        if dfs(i,j,'R'): # ํ˜„์žฌ ๋ถ€๋ถ„์ด R์ด๋ฉด
            nomal += 1
        elif dfs(i,j,'B'):
            nomal += 1
        elif dfs(i,j,'G'):
            nomal += 1

# ์ ๋ก์ƒ‰์•ฝ์ธ ์‚ฌ๋žŒ
for i in range(n):
    for j in range(n):
        if dfs(i,j,'c'): # ํ˜„์žฌ ๋ถ€๋ถ„์ด R ๋˜๋Š” G ์ด๋ผ๋ฉด
            color += 1
        elif dfs(i,j,'b'):
            color += 1

print(nomal, color)

 

๐Ÿ”— ๋ฌธ์ œ๋งํฌ ์ ๋ก์ƒ‰์•ฝ

 

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

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

www.acmicpc.net