문제
- 주어진 2차원 리스트를 정해진 룰에 따라 회전한 뒤 모래시계 모양으로 출력하라
- a, b, c = 행 정보, 0이면 왼쪽 1이면 오른쪽으로 회전, 횟수(3면 3만큼 회전)
문제 풀이
import sys
sys.stdin=open("input.txt", "r")
n = int(input())
gotgam = [list(map(int,input().split())) for _ in range(n)]
m = int(input())
for _ in range(m):
a,b,c = map(int,input().split())
if b == 0: #왼쪽으로 돌 경우
#맨 앞의 숫자를 빼서 맨 뒤로 돌려 보내주는 작업을 c번 해야 한다.
for _ in range(c):
gotgam[a-1].append(gotgam[a-1].pop(0))
else:#오른쪽으로 돌 경우
#맨 뒤의 숫자를 빼서 맨 앞으로 추가해주어야 한다.
for _ in range(c):
gotgam[a-1].insert(0, gotgam[a-1].pop())
s = 0
e = n-1
result = 0
for i in range(n):
for j in range(s, e+1):
result += gotgam[i][j]
if i < n//2:
s += 1
e -= 1
else:
s -= 1
e += 1
print(result)
- append( ) 리스트 끝에 해당 요소를 추가
- pop(0) 맨 첫번째 요소를 빼냄
- insert(원소를 추가할 index, 추가할 원소)
- pop() 리스트의 맨 뒤에 요소를 빼냄
'자료구조와 알고리즘 > 개인적인 코딩테스트 관련 풀이' 카테고리의 다른 글
[탐색][시뮬레이션] - 스토쿠(2차원 List) (0) | 2022.07.07 |
---|---|
[탐색][시뮬레이션] - 봉우리(2차원 List) (0) | 2022.07.07 |
[탐색][시뮬레이션] - 사과나무(2차원 List) (0) | 2022.07.06 |
[탐색][시뮬레이션] - 격자판 최대합(2차원 List) (0) | 2022.07.06 |
[탐색][시뮬레이션] - 수들의 합(List) (0) | 2022.07.06 |