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) 배열 출력할 때 [] <- 괄호 없이 출력할 수 있다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 / DP] 1253 : 좋다 (python) (0) | 2024.03.15 |
---|---|
[백준 / 구간 합 구하기] 11660 : 구간 합 구하기 5 (python) (1) | 2024.03.14 |
[백준 / 누적 합] 11659 : 구간 합 구하기 4 (python) (0) | 2024.02.20 |
[백준 / DP] 9095 : 1, 2, 3 더하기 (Java) (0) | 2023.09.06 |
[백준 / DP] 1463 : 1로 만들기 (Java) (0) | 2023.09.06 |