CS/알고리즘_문제풀이(파이썬)

행렬 뒤집기 2

Jedy_Kim 2021. 6. 23. 10:31
728x90

문제

뒤집기 게임의 룰은 다음과 같다.

  1. 뒤집기 게임을 진행할 맵과 뒤집기 횟수 N이 주어진다.
  2. 뒤집기 행위는 뒤집을 원소가 1이면 0으로 만들고, 0이면 1로 만든다는 뜻이다.
  3. 첫번째 뒤집을 때는 1행의 원소들과 1열의 원소들을 모두 뒤집는다. 두번째 뒤집을 때는 2행의 원소들과 2열의 원소들을 모두 뒤집는다. 마찬가지로 i번째 뒤집을 때는 i행의 원소들과 i열의 원소들을 모두 뒤집는다. 이렇게 총 N번의 뒤집기를 한다. (행과 열의 번호는 1번부터 시작한다.)

10×10크기 맵의 상태와 N이 주어졌을 때 뒤집기 게임을 모두 시행하고 난 뒤의 맵을 출력하는 프로그램을 작성해보자  

입력

입력 첫째 줄에는 뒤집을 횟수 N이 주어진다. N은 10 이하의 자연수이다.

둘째 줄에는 10×10크기 맵의 상태가 주어진다.  

출력

뒤집기 게임을 하고난 뒤의 맵의 상태를 출력한다.

 

예제 입력

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

예제 출력

1 1 1 1 1 1 1 1 1 1

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

 

예제 입력

2

0 0 1 1 1 0 0 1 1 1

1 0 1 0 1 0 0 1 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 1 0 1 0 0 1 0 0

1 0 0 0 0 0 0 0 0 0

0 0 1 1 1 0 0 1 1 1

1 0 0 0 0 0 0 0 0 0

예제 출력

1 0 0 0 0 1 1 0 0 0

1 1 0 1 0 1 1 0 1 1

0 1 0 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0 0 0

0 1 1 0 1 0 0 1 0 0

0 1 0 0 0 0 0 0 0 0

1 1 1 1 1 0 0 1 1 1

0 1 0 0 0 0 0 0 0 0

 

#코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import sys 
 
 
if __name__ == "__main__":
  input = sys.stdin.readline
  n   = int(input())
  arr = [list(map(int, input().split())) for _ in range(10)]
  
  row = 0
  col = 0
  while True:
    # 열을 그린다.
    for i in range(10):
      if arr[row][i] == 1
        arr[row][i] = 0 
      else:
        arr[row][i] = 1 
    # 행을 그린다.
    for i in range(10):
      if arr[i][col] == 1
        arr[i][col] = 0 
      else:
        arr[i][col] = 1 
      
    row += 1  
    col += 1
    if row >= n and col >= n: break 
  
  for i in range(n):
    if arr[i][i] == 1: arr[i][i] = 0
    else: arr[i][i] = 1
  
  for i in arr:
    for j in i:
      print(j, end=' ')
    print()
cs

 

반응형

'CS > 알고리즘_문제풀이(파이썬)' 카테고리의 다른 글

fibonacci  (0) 2021.06.24
nextnum  (0) 2021.06.24
seat[백준 10157]  (0) 2021.06.22
tetris  (0) 2021.06.22
행렬 뒤집기  (0) 2021.06.22