본문 바로가기

코딩테스트 with PYTHON

[python] 코딩테스트 대비 - 2차원 배열 회전 및 모래시계 탐색

문제)

 

 

답안코드)

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
import sys
#sys.stdin = open("input.txt", 'r')
n=int(input())
a=[list(map(int, input().split())) for _ in range(n)]
 
m=int(input())#회전 명령 수
 
for i in range(m):
    h, t, k=map(int, input().split())#행, 방향, 수
    if(t==0):#왼쪽일 경우
        for _ in range(k):
            a[h-1].append(a[h-1].pop(0))#맨 앞자료를 빼서 맨 뒤로 삽입
    else:#오른쪽일 경우
        for _ in range(k):
            a[h-1].insert(0, a[h-1].pop())#맨 뒷자료를 빼서 맨 앞으로 삽입
 
res=0#정답
s=0#왼쪽 포인터
e=n-1#오른쪽 포인터
 
for i in range(n):
    for j in range(s, e+1):
        res+=a[i][j]
    if i<n//2:#중간지점을 지나지 않았다면, 범위 쫍힘
        s+=1
        e-=1
    else:#중간지점을 지났다면, 범위 넓힘.
        s-=1
        e+=1
print(res)
cs