인프런 커뮤니티 질문&답변

hyoseok BANG님의 프로필 이미지
hyoseok BANG

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

8. 곳감(모래시계)

slicing을 이용한 rotation

작성

·

250

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
slicing을 이용해서 구현해보았는데요, 제시해주신 방법과 rotation 결과는 같은데 채점을 해보니 결과가 다른 문제가 있습니다. 3번과 4번 케이스의 결과가 정답과 다르게 나오는데, 혹시 제가 모르는 예외 케이스가 있는건가요? 아래는 제가 작성한 코드입니다.
 
import sys
import time

sys.stdin = open(r"섹션 3/8. 곳감/in2.txt", "r")
N = int(input())
arr = [list(map(int, input().split())) for _ in range(N)]
M = int(input())
# 1) array slicing
for _ in range(M):
rownum, direction, step = map(int, input().split()) # direction: 0 = left, 1 = right
if direction == 0:
arr[rownum-1] = arr[rownum-1][step:] + arr[rownum-1][:step]
else:
arr[rownum-1] = arr[rownum-1][N-step:] + arr[rownum-1][:N-step]
# 2) using pop() & insert()
# for i in range(M):
# h, t, k = map(int, input().split())
# if(t == 0):
# for _ in range(k):
# arr[h-1].append(arr[h-1].pop(0))
# else:
# for _ in range(k):
# arr[h-1].insert(0, arr[h-1].pop())

# sum of sandglass
p1 = 0
p2 = N
sums = 0
for i in range(N):
sums += sum(arr[i][p1:p2])
if i < N//2:
p1 += 1
p2 -= 1
else:
p1 -= 1
p2 += 1

print(sums)

답변 2

1

회전이 주어진 사이즈보다 커지는 경우,

예를 들어 N이 13인데 리스트 회전이 25가 되는 경우 등을 고려하지 않은 것 같습니다.

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

파이썬 코드를 들여쓰기를 무시해서 올려주시면 제가 디버그를 할 수가 없습니다.

 

hyoseok BANG님의 프로필 이미지
hyoseok BANG

작성한 질문수

질문하기