백준 문제풀이

백준 17302 - 흰색으로 만들기 [Python]

Vermeil 2020. 12. 23. 01:59

www.acmicpc.net/problem/17302

 

17302번: 흰색으로 만들기

첫 줄에 N과 M이 주어진다. (1 ≤ N, M ≤ 2,000) 다음 줄부터 N개의 줄에 걸쳐 각 행의 상태를 나타내는 길이 M의 문자열이 주어진다. 모든 문자열은 'B'와 'W'로 이루어져 있다. i 번째 줄, j 번째 문자

www.acmicpc.net

 

1~3번 행동의 차이를 보다가, 2번과 3번이 선택한 칸의 반전 여부가 다르다는 것을 알게 되었다.

 

모든 칸에 2번 행동을 취해준 후 결과에서 검은색이 있다면 그 칸은 3번 행동을 취해야 했던 칸임을 알 수 있다.

 

모두 3번 행동을 돌리고 흰색이 있으면 2번 행동을 취해야 했던 것이기도 하다. 어떻게 하던 상관은 없다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import sys
input = sys.stdin.readline
 
n,m = map(int,input().split())
= []
for i in range(n):
    r = list(str(input()))
    for j in range(m):
        r[j] = (True if r[j] == "W" else False)
    a.append(r)
dx = [-1,1,0,0]
dy = [0,0,-1,1]
for i in range(n):
    for j in range(m):
        for k in range(4):
            nx = dx[k] + i
            ny = dy[k] + j
            if 0 <= nx < n and 0 <= ny < m:
                a[nx][ny] = not a[nx][ny]
print(1)
for i in range(n):
    for j in range(m):
        if a[i][j] == True:
            print(2,end='')
        else:
            print(3,end='')
    print('')
cs

 

 

 

애드혹 정말 재밌다

삽질만 안하면..

오타, 오류 지적 환영합니다.