본문 바로가기
알고리즘/Python

6096 : 바둑알 십자 뒤집기(Python 기초 100제)

by yhyuk 2021. 3. 22.
728x90
반응형

< 문제 >

부모님을 기다리던 영일이는 검정/흰 색 바둑알을 바둑판에 꽉 채워 깔아 놓고 놀다가...

"십(+)자 뒤집기를 해볼까?"하고 생각했다.

십자 뒤집기는
그 위치에 있는 모든 가로줄 돌의 색을 반대(1->0, 0->1)로 바꾼 후, 
다시 그 위치에 있는 모든 세로줄 돌의 색을 반대로 바꾸는 것이다.
어떤 위치를 골라 집자 뒤집기를 하면, 그 위치를 제외한 가로줄과 세로줄의 색이 모두 반대로 바뀐다.

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

 

< 입력 >

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

< 출력 >

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

 

< 풀이 >

바둑판의 0을 1, 1을 0으로 바꾸자

a = []
for i in range(20):
    a.append([])
    for j in range(20):
        a[i].append(0)

for i in range(19):
    b = input().split()
    for j in range(19):
        a[i+1][j+1] = int(b[j])

n = int(input())
for i in range(n):
    x,y = map(int,input().split())
    for j in range(1,20):
        if a[j][y] == 0: a[j][y] = 1
        else: a[j][y] = 0
        
        if a[x][j] == 0: a[x][j] = 1
        else: a[x][j] = 0

for i in range(1,20):
    for j in range(1,20):
        print(a[i][j],end = ' ')
    print()

< 출처 > 

codeup.kr/problem.php?id=6096

 

[기초-리스트] 바둑알 십자 뒤집기(py)

python언어기초100제v1.0 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용

codeup.kr

 

728x90
반응형

댓글