C언어
코드업 3704 계단오르기2
mcdn
2021. 1. 26. 12:12
반응형
www.codeup.kr/problem.php?id=3704
계단 오르기 2
계단의 수 n이 입력된다. ( 1 <= n <= 100,000 )
www.codeup.kr
문제 설명 내 문제집에 추가
n개의 계단이 있다.
어떤 사람이 계단을 오르려 하는데 이 사람은 계단을 한번에 1계단 2계단 또는 3계단씩 오를 수 있다.
이 사람이 계단을 오를수 있는 경우의 수를 1000으로 나눈 나머지를 구하여라
입력
계단의 수 n이 입력된다. ( 1 <= n <= 100,000 )
출력
계단을 오를 수 있는 가지수에 1000으로 나눈 나머지를 출력한다.
입력 예시 예시 복사
5
출력 예시
13
#include <iostream>
using namespace std;
int memoz[100001];
int recv(int n)
{
if (memoz[n])
return (memoz[n]);
if (n == 1 || n == 2)
return (n);
if (n == 3)
return (4);
memoz[n]= recv(n - 3) + recv(n - 2) + recv(n - 1);
return memoz[n];
}
int main(void)
{
int n;
cin >> n;
int ret = recv(n);
cout << ret % 1000;
}
이렇게 풀면
- 총 13개 중 6번째 테스트 케이스 -
점수 = 38 / 100 입력: 50
정답
642 -----------------
출력 결과
778 =================
위의 케이스에서 틀림
#include <iostream>
using namespace std;
int memoz[100001];
int recv(int n)
{
if (memoz[n])
return (memoz[n]);
if (n == 1 || n == 2)
return (n);
if (n == 3)
return (4);
memoz[n]= recv(n - 3) %1000 + recv(n - 2)%1000 + recv(n - 1)%1000;
return memoz[n];
}
int main(void)
{
int n;
cin >> n;
int ret = recv(n);
cout << ret % 1000;
}
%1000 을 각각 해주니까 잘 나온다.
반응형