본문 바로가기

알고리즘/백준

[백준 / 리스트] 25966 : 배찬우는 배열을 좋아해 (python)

728x90

문제 설명

문제

찬우는 오늘 프로그래밍 기초 강의에서 2차원 배열에 대해 배웠다. 너무 재미있던 찬우는 2차원 배열에다 연산을 진행하기로 결심했다.

아래와 같은 두 가지 종류의 연산이 쿼리로 주어진다.

  • 0 i j k : i번 행의 j번 열의 값을 k로 바꾼다.
  • 1 i j : i번 행과 j번 행을 swap한다.

swap 이란 i번 행의 모든 원소와 j번 행의 모든 원소를 바꾸는 연산이다.

 q개의 쿼리를 수행한 후 바뀐 배열의 최종 결과를 출력하시오.

 

출력

 q개의 쿼리를 전부 수행한 후의 2차원 배열을 출력한다.

 

 

예제 입력 1

4 3 4   # 행의 개수, 열의 개수, 쿼리 개수
10 3 8  # 2차원 배열 (4x3)
2 10 4  # 2차원 배열 (4x3)
1 8 4   # 2차원 배열 (4x3)
1 4 2   # 2차원 배열 (4x3)
1 2 2   # 쿼리
0 1 0 9 # 쿼리
1 2 1   # 쿼리
1 3 0   # 쿼리

 

 

예제 출력 1

1 4 2
1 8 4
9 10 4
10 3 8

 

풀이

import sys
input = sys.stdin.readline

n, m, q = map(int, input().split())
arr = []

#배열에 저장
for i in range(n):
    arr.append(list(map(int, input().split())))

#쿼리 해결
for i in range(q):
    command = list(map(int, input().split()))
    if command[0] == 0:
        arr[command[1]][command[2]] = command[3]
    elif command[0] == 1:
        arr[command[1]], arr[command[2]] = arr[command[2]], arr[command[1]] #swap

for i in range(n):
    print(*arr[i])

 

  • 파이썬에서 swap이 구현하기 쉬워서 쉽게 풀었다.
  • 배열 앞에 *을 붙이면 (ex. *arr) 배열 출력할 때 [] <- 괄호 없이 출력할 수 있다.

 

 

반응형