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

이희종님의 프로필 이미지
이희종

작성한 질문수

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

8. 곳감(모래시계)

곶감(모래시계) 문제 코드 질문입니다.

작성

·

281

1

import sys
sys.stdin = open("input.txt", "rt")

n = int(input()) # 마당 길이
ground = list() # 마당 격자판

for _ in range(n):
    ground.append(list(map(int, input().split())))

m = int(input()) # 회전명령 개수
for TC in range(m):
   idx, direc, turn = map(int, input().split())
   tmp = 0

   if direc == 0: # 왼쪽 회전
      tmp = ground[idx-1][:turn]
      del ground[idx-1][:turn]
      ground[idx-1] += tmp
   else: # 오른쪽 회전
      tmp = ground[idx-1][-turn:]
      del ground[idx-1][-turn:]
      for i in range(len(tmp)):
          ground[idx-1].insert(i, tmp[i])

s, e = 0, n-1
ans = 0
for i in range(n):
   if i < n//2:
      ans += sum(ground[i][s:e+1])
      s += 1
      e -= 1
   else:
      ans += sum(ground[i][s:e+1])
      s -= 1
      e += 1

print(ans)

곶감(사과나무)문제에 대한 코드를 작성해봤는데, 3번과 4번 테스트 케이스만 오답으로 나옵니다. 어느 부분이 잘못됐는지 찾지 못하여 질문드립니다!

답변 1

0

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

안녕하세요^^

3번 케이스 같은 경우 13 * 13 크기의 2차원 배열에서 회전을 하는데 위에 코드는

4번째 명령인 5 0 25를 제대로 수행하지 못하는 것 같습니다. 5번 행을 왼쪽으로 25칸 움직이는 것인데 움직이는 칸수가 25칸으로 13을 넘어가서 계산이 잘못 되는 것 같습니다.

3번 케이스의 5 0 25 명령이 잘 수행되는지 디버그해보세요.

이희종님의 프로필 이미지
이희종
질문자

배열 크기를 벗어나는 회전값에 대해 회전값 - 배열길이로 값을 보정하여 해결했습니다!

감사합니다 ㅎㅎ

이희종님의 프로필 이미지
이희종

작성한 질문수

질문하기