10844번 - 쉬운 계단 수
배열을 만들 때 다른 분들과 배열 해석을 약간 달리해서 풀었습니다.
제가 잘못 했을 가능성도 높지만
전 틀리지 않았다고 생각한 것이
왜냐하면 다른 코드와 제 코드에 각각 1~100을 입력한 값을 배열로 저장해 두 결과값의 차를 구하면
다른 코드 : https://www.acmicpc.net/board/view/37207
(이 분 코드에서 배열값이 10억을 초과하는 문제를 해결하기 위해 나머지 연산 부분을 수정했습니다.)
아래와 같이 0 또는 10억의 배수로만 나오기 때문입니다.
00000000000000000000000000000000010000000001000000000001000000000100000000010000000001000000000100000000000100000000000-1000000000000001000000000100000000020000000001000000000200000000000000100000000000-10000000001000000000020000000000-100000000000-100000000001000000000100000000010000000001000000000100000000010000000000010000000000000000100000000000200000000001000000000-10000000001000000000
저는 stairNumCount[i][j] 라는 배열을 만들어서 이렇게 해석했습니다.
stairNumCount[i][j] = (i번째 자리에 j라는 숫자가 들어가는 계단수의 갯수)
예를 들어 stairNumCount[5][2] 는, 다섯번째 자리에 2가 들어가는 계단 수(예시 : 23432, 23454, ...)의 갯수입니다.
stairNumCount의 값 테이블은 다음과 같습니다.
stairNumCount[1] : 1 1 1 1 1 1 1 1 1 1 stairNumCount[2] : 1 2 2 2 2 2 2 2 2 1 stairNumCount[3] : 2 3 4 4 4 4 4 4 3 2 stairNumCount[4] : 3 6 7 8 8 8 8 7 6 3 stairNumCount[5] : 6 10 14 15 16 16 15 14 10 6 stairNumCount[6] : 10 20 25 30 31 31 30 25 20 10 stairNumCount[7] : 20 35 50 56 61 61 56 50 35 20 stairNumCount[8] : 35 70 91 111 117 117 111 91 70 35 stairNumCount[9] : 70 126 181 208 228 228 208 181 126 70 stairNumCount[10] : 126 251 334 409 436 436 409 334 251 126
...
이때 예를 들어 input값으로 10을 준다면
결과 값은 stairNumCount[10][1] + stairNumCount[10][2] + ... + stairNumCount[10][9] 이 됩니다.
(stairNumCount[10][0]는 맨 앞에 0이 들어가는 수이므로 제외합니다)
제 코드에서 논리상 틀린 부분이 있으면 지적해 주시고
논리상 틀린 게 없다면 관리자 분들이 정답 처리 해주셨으면 좋겠습니다.
긴 글 읽어 주셔서 감사합니다.
직접 테스트 해보셨다시피, 정답과 다른 결과가 나오면 당연히 틀리는게 맞습니다. 왜 정답처리가 되셔야 한다고 생각하시나요?
마지막에 result를 더할 때에도 %10억을 안해서 틀리신것 같습니다.
"틀렸습니다"는 구현 방법에 관계 없이 오로지 출력이 틀렸을 때만 받습니다.
https://www.acmicpc.net/blog/view/55
마지막 result에 % 1000000000 을 안했네요;;
답변해주셔서 감사합니다.
댓글을 작성하려면 로그인해야 합니다.
bae1776 4년 전
배열을 만들 때 다른 분들과 배열 해석을 약간 달리해서 풀었습니다.
제가 잘못 했을 가능성도 높지만
전 틀리지 않았다고 생각한 것이
왜냐하면 다른 코드와 제 코드에 각각 1~100을 입력한 값을 배열로 저장해 두 결과값의 차를 구하면
다른 코드 : https://www.acmicpc.net/board/view/37207
(이 분 코드에서 배열값이 10억을 초과하는 문제를 해결하기 위해 나머지 연산 부분을 수정했습니다.)
아래와 같이 0 또는 10억의 배수로만 나오기 때문입니다.
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1000000000
1000000000
0
0
1000000000
1000000000
1000000000
1000000000
1000000000
0
0
1000000000
0
0
-1000000000
0
0
0
0
0
1000000000
1000000000
2000000000
1000000000
2000000000
0
0
0
0
0
1000000000
0
0
-1000000000
1000000000
0
2000000000
0
-1000000000
0
0
-1000000000
0
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000
0
0
1000000000
0
0
0
0
0
0
0
1000000000
0
0
2000000000
0
1000000000
-1000000000
1000000000
저는 stairNumCount[i][j] 라는 배열을 만들어서 이렇게 해석했습니다.
stairNumCount[i][j] = (i번째 자리에 j라는 숫자가 들어가는 계단수의 갯수)
예를 들어 stairNumCount[5][2] 는, 다섯번째 자리에 2가 들어가는 계단 수(예시 : 23432, 23454, ...)의 갯수입니다.
stairNumCount의 값 테이블은 다음과 같습니다.
stairNumCount[1] : 1 1 1 1 1 1 1 1 1 1
stairNumCount[2] : 1 2 2 2 2 2 2 2 2 1
stairNumCount[3] : 2 3 4 4 4 4 4 4 3 2
stairNumCount[4] : 3 6 7 8 8 8 8 7 6 3
stairNumCount[5] : 6 10 14 15 16 16 15 14 10 6
stairNumCount[6] : 10 20 25 30 31 31 30 25 20 10
stairNumCount[7] : 20 35 50 56 61 61 56 50 35 20
stairNumCount[8] : 35 70 91 111 117 117 111 91 70 35
stairNumCount[9] : 70 126 181 208 228 228 208 181 126 70
stairNumCount[10] : 126 251 334 409 436 436 409 334 251 126
...
이때 예를 들어 input값으로 10을 준다면
결과 값은 stairNumCount[10][1] + stairNumCount[10][2] + ... + stairNumCount[10][9] 이 됩니다.
(stairNumCount[10][0]는 맨 앞에 0이 들어가는 수이므로 제외합니다)
제 코드에서 논리상 틀린 부분이 있으면 지적해 주시고
논리상 틀린 게 없다면 관리자 분들이 정답 처리 해주셨으면 좋겠습니다.
긴 글 읽어 주셔서 감사합니다.