안녕하세요 두번째 포스팅 입니다.
오늘은 2014 정보올림피아드 전국대회 1번 문제를 풀어봅시다.
문제입니다. 1번 문제인 만큼 정말 쉽죠?
이 문제는 다이나믹프로그래밍을 사용하면 쉽게 해결이 가능 합니다.
와 다이나믹이라니 이름부터 참 다이나믹하죠?
코드 보시겠습니다.
조금 길죠? 하지만 간단합니다.
path 함수를 먼저 봅시다.
기저사례는 보시듯이 n이 1이거나 m이 1일 때 입니다.
일단 cache라는 배열을 선언하여 저장소를 만들어줍니다.
그리고 만역 cache[n][m]에 데이터가 있다면 그 데이터를 반환합니다.
아니라면 cache[n][n]에 (n-1, m) 까지의 경로 수와 (n, m-1)경로 수를 더한 값을 저장하고 반환합니다.
메인 함수에서는 만약 target이 0일때 path함수를 한번만 호출하고
아니라면 두 번 호출합니다.
그러나 예외의 경우가 있는데요 target % m 이 0일때 입니다.
이 경우를 제외하면 그냥 저 대로 하면 됩니다.
1번은 쉽죠??
다같이 정올 대상을 위해 공부합시다.
여기까지~!
'문제 해결' 카테고리의 다른 글
알고스팟 - FESTIVAL 문제 (0) | 2016.06.27 |
---|---|
헬로우 월드 코드를 작성해 보자! (2) | 2016.06.26 |