• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

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

23.05.10 19:23 작성 조회수 215

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 명령이 잘 수행되는지 디버그해보세요.

이희종님의 프로필

이희종

질문자

2023.05.13

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

감사합니다 ㅎㅎ