바둑알 십자 뒤집기

HeeSeong·2021년 1월 23일
0

코드업

목록 보기
3/3
post-thumbnail

🔗 문제 링크

https://codeup.kr/problem.php?id=1097


❔ 문제 설명


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

바둑알이 깔려 있는 상황이 19 * 19 크기의 정수값으로 입력된다.
십자 뒤집기 횟수(n)가 입력된다.
십자 뒤집기 좌표가 횟수(n) 만큼 입력된다.
십자 뒤집기 결과를 출력해라.


< 입 력 >

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

< 출 력 >

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 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

⚠️ 제한사항


  • 단, n은 10이하의 자연수이다.



💡 풀이 (사용언어 : Python)

상당히 복잡한 배열이라 어려웠는데 정답을 참고해 이해하고 다시 작성해 보았다. 이중 배열을 만들고 해당 위치 값을 바꿔주는데 더 능해져야 할 것 같다.

import sys

m = []
# 인덱스가 0부터 19까지인 2중 배열을 만들어줌
for i in range(20):
    m.append([])
    for j in range(20):
        m[i].append(0)

# 똑같이 배열이므로 0번부터 고려해야되서 I+1 J+1 해줌
for i in range(19):
    test = list(map(int, sys.stdin.readline().strip().split()))
    for j in range(19):
       m[i+1][j+1] = test[j]

n = int(sys.stdin.readline().strip())

# 0번 인덱스를 고려하지 않고 1번 인덱스줄부터 쓸것이므로 X-1 Y-1 해주지 않음 
for i in range(n):
    x, y = map(int, sys.stdin.readline().strip().split()) 

    for j in range(1, 20):

        if m[x][j] == 0:
            m[x][j] = 1
        else:
            m[x][j] = 0

        if m[j][y] == 0:
            m[j][y] = 1
        else:
            m[j][y] = 0

# 가로 1줄 출력후 다음 줄로 넘어가주기위해 print()
for i in range(1, 20):
    for j in range(1, 20):
        print(m[i][j], end = " ")
    print()
profile
끊임없이 성장하고 싶은 개발자

0개의 댓글

관련 채용 정보