본문 바로가기

Code Up

[Code Up] - Python 기초 100제, 6096번 풀이 - 티스토리

 

 

 

문제 설명

 

19*19 크기의 바둑판이 있을 때, 바둑판의 상황이 주어진다.

 

흰 돌(1), 검은 돌(0)로 채워져 있을 때 십자 뒤집기 횟수가 입력되고 횟수만큼 십자 뒤집기 할 좌표가 입력된다.

 

* 십자 뒤집기는 해당 좌표의 가로줄을 0 -> 1, 1 -> 0으로 바꾼 후 세로줄도 똑같은 조건으로 바꿔준다. 그러나 해당 좌표는 원래의 상태를 유지시킨다

 

 

 

 

풀이

 

d = list()

for i in range(19):
    d.append([])
    for j in range(19):
        d[i].append(0)

for i in range(19):
    d[i] = list(map(int, input().split()))

n = int(input())

for i in range(n):
    x, y = map(int, input().split())

    if (d[x-1][y-1] == 0):
        for j in range(19):
            if (d[x-1][j] == 0):
                d[x-1][j] = 1

            else:
                d[x-1][j] = 0

            if(d[j][y-1] == 0):
                d[j][y-1] = 1

            else:
              d[j][y-1] = 0

        d[x-1][y-1] = 0

    else:
        for j in range(19):
            if (d[x-1][j] == 0):
                d[x-1][j] = 1

            else:
                d[x-1][j] = 0

            if (d[j][y-1] == 0):
                d[j][y-1] = 1

            else:
                d[j][y-1] = 0

        d[x-1][y-1] = 1
           
for i in range(19):
    for j in range(19):
        print(d[i][j], end=' ')
    print()

 

 

 

해설

 

2차원 배열 d를 0으로 초기화 후 바둑판의 상태를 입력 받는다

십자 뒤집기 횟수를 n에 입력 받고 n번 만큼 십자 뒤집기 좌표인 x, y좌표를 입력 받는다

십자 뒤집기 한 후 해당 좌표의 원래 상태는 유지 되어야 하므로 해당 좌표가 0일 경우와 1일 경우로 나눈다

해당 좌표의 x좌표를 고정 시킨 후 y좌표를 0이면 1로, 1이면 0으로 바꾼다

그 후 y좌표를 고정 시킨 후 x좌표를 0이면 1로, 1이면 0으로 바꾼다

십자 뒤집기가 완료된 후에는 해당 좌표의 원래 상태로 복귀 시킨다 (근데 다른 분 풀이 보면 이 과정을 뺐는데 내가 문제 독해 능력이 부족한 건가..)

 

 

 

다른 분 풀이

 

location = []

for i in range(19):
    location.append([])

    for j in range(19):
        location[i].append(0)

for i in range(19):
    location[i] = list(map(int, input().split()))

n = int(input())

for i in range(n):
    x, y = map(int, input().split())

    for j in range(19):
        if location[x-1][j] == 0:
            location[x-1][j] = 1
        else:
            location[x-1][j] = 0
        if location[j][y-1] == 0:
            location[j][y-1] = 1
        else:
            location[j][y-1] = 0

for i in range(19):
    for j in range(19):
        print(location[i][j], end=" ")
    print()