temp   1달 전

먼저 문제를 보면 다음과 같은 말이 있습니다.

S: S 는 n에서 1 을 뺀 결과 n-1을 레지스터에 저장한다. n이 0 이라면 9999 가 대신 레지스터에 저장된다.

그래서 저는 n-1값이 0이되면 9999로 변경시키고 아니면 그냥 쓰라고 했죠. 그런데 자꾸 오답이 났습니다.

그리고 정답자들의 공통점은 (10000+n - 1)%10000; 로 표기한것을 파악하고 저도 이렇게 해보니 정답이 나오더군요.

근데 만약 이렇다면 n=1 인 상황에서 저 연산의 값은 0이 나오게 되지 않나요? 그럼 9999가 대신 들어가야 한다는데 들어가지 않고 0이 들어가게 되구요. 

예제를 들어보면 

10 9874

가 입력이 들어오면 현재 정답 소스에서는 DSDLLSLLD를 출력하게 되며 총 9번의 연산이 들어갑니다. 

하지만 만약 n-1 이 0일때 9999를 넣게 하면 RSDDLDSD로 8번 만에 답이 나옵니다.

이것을 증명하자면 다음과 같습니다.

R -> 1

S->9999

D->9998

D->9996

L->9969

D->9938

S->9937

D->9874

이렇게 됩니다.


제가 잘못이해한것인지 궁금하여 질문드립니다. 제가 놓친 부분이 있을까요?

cubelover   1달 전

"n"이 0이라면 9999를 저장한다

n-1이 0이 아니고 n이 0인 경우입니다... n-1이 0일 때(n이 1일 때)에는 0이 들어가는 게 맞습니다

temp   1달 전

그렇군요. 감사합니당!!

댓글을 작성하려면 로그인해야 합니다.