Study/Python

[python]][CodeUp] Python 기초 100제 - 96번

seomj 2022. 4. 25. 13:52

문제

입력

바둑알이 깔려 있는 상황이 19 * 19 크기의 정수값으로 입력된다.
십자 뒤집기 횟수(n)가 입력된다.
십자 뒤집기 좌표가 횟수(n) 만큼 입력된다. 단, n은 10이하의 자연수이다.

 

출력

십자 뒤집기 결과를 출력한다.

 

코드

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

n = int(input())
for i in range(n):
    x, y = input().split()
    x, y = int(x), int(y)
    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

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

d라는 리스트를 만들어 바둑판으로 사용할 2차원 리스트를 생성한다.

a라는 변수를 사용해 입력한 숫자들을 리스트 형태로 받아 그대로 d리스트에 넣어 2차원 리스트를 생성한다.

 

n 변수에 몇 번의 뒤집기를 반복할 것인지의 횟수를 입력받는다.

n만큼의 for문을 돌릴 것이다. 

x와 y의 변수를 받아 몇 번째 줄의 바둑알들을 뒤집을지 입력받는다.

for문과 if문을 사용해 해당 줄의 바둑알을 뒤집어준다.

 

이중 for문을 통해 보기 좋게 출력시킨다.

 

 

주의할 것! (제가 실수하거나 놓쳤던 부분들)

  • 자료형 유의할 것
  • x, y 값과 2차원 리스트의 행과 열 관계를 명확히 이해할 것
  • 1~19줄까지의 바둑판과 인덱스 0부터 시작하는 리스트의 번호 관계를 잘 이해할 것

 

a = []
for i in range(5):
    b = list(map(int, input().split()))
    a.append(b)

print("-"*50)
print(a[1][2])
print(a[2][1])

위와 같은 코드를 통해 2차원 리스트에서 앞부분에 해당하는 숫자가 행, 가로줄

뒷부분에 해당하는 숫자가 열, 세로줄에 해당하는 것을 확인했다.

 

개인적으로 헷갈리는 부분이였기에 짚고 넘어감