9019번 - DSLR
먼저 문제를 보면 다음과 같은 말이 있습니다.
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
이렇게 됩니다.
제가 잘못이해한것인지 궁금하여 질문드립니다. 제가 놓친 부분이 있을까요?
그렇군요. 감사합니당!!
댓글을 작성하려면 로그인해야 합니다.
temp 6년 전
먼저 문제를 보면 다음과 같은 말이 있습니다.
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
이렇게 됩니다.
제가 잘못이해한것인지 궁금하여 질문드립니다. 제가 놓친 부분이 있을까요?