문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

1095 : [기초-리스트] 바둑알 십자 뒤집기

•시간제한: 1.000 S •메모리제한: 128 MB •제출: 29 •통과: 20 •만든사람: suakii

1095 : [기초-리스트] 바둑알 십자 뒤집기

시간 1.000s · 메모리 128MB · 제출 29 · 정답 20

문제 설명

본 문제는 python 의 빠른 기초 학습을 위해 설계된 문제로서 python 코드 제출을 기준으로 설명되어 있습니다.
------
집에서 다른 가족들을 기다리던 영일이는 바둑알을 바둑판에 꽉 채워 깔아 놓고 놀다가 "바둑알 십(+)자 뒤집기를 만들어 볼까?"라는 생각을 하게 되었다.

어떤 위치를 골라서 십자 뒤집기를 하면, 그 위치의 가로줄에 있는 모든 바둑돌의 색을 반대(1->0, 0->1)로 바꾼 후, 그 위치의 세로줄에 있는 모든 바둑돌의 색을 반대로 바꾸는 것이다.
즉, 선택한 위치의 가로줄과 세로줄에 있는 모든 바둑돌의 색이 반대로 바뀌게 된다. (선택한 칸 자체의 돌은 가로줄 때 한 번, 세로줄 때 한 번 바뀌어 결국 제자리가 된다.)

흰 돌(1)과 검정 돌(0)이 꽉 채워져 있는 $19 \times 19$ 크기의 바둑판 상태와 $n$개의 십자 뒤집기 좌표가 입력될 때, 십자 뒤집기를 수행한 결과를 출력해 보자.


아래의 예시 코드를 읽고, 이해한 후 도전해 보자.

예시 코드
# 19x19 크기의 바둑판을 0으로 초기화
d = [[0 for j in range(20)] for i in range(20)]

# 현재 바둑판 상태 입력받기
for i in range(19):
    a = input().split()
    for j in range(19):
        d[i+1][j+1] = int(a[j])

# 십자 뒤집기 횟수 입력받기
n = int(input())

# 십자 뒤집기 수행
for i in range(n):
    x, y = map(int, input().split())
    # 가로줄 뒤집기
    for j in range(1, 20):
        if d[x][j] == 0:
            d[x][j] = 1
        else:
            d[x][j] = 0
    # 세로줄 뒤집기
    for j in range(1, 20):
        if d[j][y] == 0:
            d[j][y] = 1
        else:
            d[j][y] = 0

# 결과 출력
for i in range(1, 20):
    for j in range(1, 20):
        print(d[i][j], end=' ')
    print()

참고
리스트 안에 다른 리스트를 넣어 만들면 가로 번호와 세로 번호를 사용하는 2차원 형태의 데이터를 저장해 사용할 수 있습니다.
이름[세로번호][가로번호] 형식으로 리스트에 저장되어 있는 값을 읽거나 쓸 수 있습니다.

[f-string 출력 참고]
print(f"{d[i][j]}", end=' ')

입력 설명

첫 번째 줄부터 19번째 줄까지 바둑판의 초기 상태(19 x 19 크기의 0 또는 1)가 한 줄씩 입력된다.
20번째 줄에 십자 뒤집기 횟수 $n$이 입력된다.
21번째 줄부터 $n$개의 줄에 걸쳐 십자 뒤집기 좌표 $x$, $y$가 스페이스로 구분되어 한 줄씩 입력된다.
($1 \le n \le 10$, $1 \le x, y \le 19$)

출력 설명

십자 뒤집기를 모두 수행한 최종 바둑판의 상태(19 x 19)를 출력한다.

입력 예시
COPY
복사되었습니다!

0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
2
10 10
12 12

출력 예시
COPY
복사되었습니다!

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

도움

기초100제(py) v0.85 : 정보교사 커뮤니티 @컴퓨터과학사랑(CSL)
- 중고등학교 정보 선생님들과 함께 정보수업/방과후/동아리활동 등을 통해 재미있게 배워보세요.
- 모든 내용 및 이미지들은 저작자와의 협의 없이 무단으로 사용할 수 없습니다.

[원작자: 전현석, 최문성(확인), 이준용(확인), 김지혜(그림) (2020)]

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘