알고리즘 풀이/백준(Boj)

백준(BOJ) 4811번 알약

100win10 2019. 9. 16. 03:01

문제 : https://www.acmicpc.net/problem/4811


문제

70세 박종수 할아버지는 매일 매일 약 반알을 먹는다. 손녀 선영이는 종수 할아버지에게 약이 N개 담긴 병을 선물로 주었다.

첫째 날에 종수는 병에서 약 하나를 꺼낸다. 그 다음, 그 약을 반으로 쪼개서 한 조각은 먹고, 다른 조각은 다시 병에 넣는다.

다음 날부터 종수는 병에서 약을 하나 꺼낸다. (약은 한 조각 전체 일 수도 있고, 쪼갠 반 조각 일 수도 있다) 반 조각이라면 그 약을 먹고, 아니라면 반을 쪼개서 한 조각을 먹고, 다른 조각은 다시 병에 넣는다.

종수는 손녀에게 한 조각을 꺼낸 날에는 W를, 반 조각을 꺼낸 날에는 H 보낸다. 손녀는 할아버지에게 받은 문자를 종이에 기록해 놓는다. 총 2N일이 지나면 길이가 2N인 문자열이 만들어지게 된다. 이때, 가능한 서로 다른 문자열의 개수는 총 몇 개일까?


풀이 :


알약이 2개가 있다면 한알 2개와 한알1개 반알1개가 있을때는 다른 경우이기에 한알과 반알 각각으로 2차원 배열을 만들어 주자.


재귀호출의 경우는 하나는 한개를 빼고 반개를 더해주는 경우 나머지 하나는 반개를 빼는 경우이다.




코드 ( C ++ )