[CodeUp] 6096 바둑알 십자 뒤집기 (파이썬)

Jewon Joel Park·2022년 5월 28일

문제 링크


문제 설명

바둑판(19 * 19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때,
n개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 코드 작성


제출 코드

badookpan = []
for _ in range(19):
  badookpan.append(list(map(int, input().split())))

n = int(input())
for _ in range(n):
  y, x = map(int, input().split())
  for i in range(19):
    badookpan[i][x-1] = 0 if badookpan[i][x-1] == 1 else 1
    badookpan[y-1][i] = 0 if badookpan[y-1][i] == 1 else 1


for row in badookpan:
  print(*row)

코드 설명

  1. 최초 실행 시 입력으로 주어지는 19*19 바둑판을 입력받기 위해 리스트(badookpan) 생성
  2. 십자뒤집기를 실행할 횟수(n)을 입력받아 for Loop 실행
  3. 뒤집기를 실행할 기준점 좌표의 행(y)과 열(x)을 입력받기 위해 input().split() 실행
  4. 기준점 좌표를 기준으로 해당 행과 열을 모두 뒤집으므로, 하나의 for Loop에서 0 ~ 18번 인덱스를 호출, 각각의 y, x 좌표에 해당하는 값이 0일경우 1로, 1일경우 0으로 변환하여 저장
  5. 별도의 for Loop으로 바둑판의 모든 객체를 언패킹(*)하여 출력

cf) y, x 좌표는 1부터 시작하고, 인덱스는 0부터 시작하기 때문에 -1 필요. 이 때 map() 내부에 lambda x: int(x)-1 처리하여 좌표를 인덱스화 하는 작업을 간소화할 수 있음.

profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글