tjrdnd0511   4년 전

10이나 20등 0으로 끝나는 수에 대한 입력을 고려하지 않아서 답도 정확히 나오는 건 아니지만 

제가 생각하기엔 시간 복잡도가 44*44 정도 밖에 안되는 거 같은데 돌려보면 시간초과 뜹니다. 

왜그런지 좀 알려주세요... 


yomyom0824   4년 전

시간 복잡도를 잘못 생각하신 듯 합니다.

그냥 구한다면, 시간복잡도는 n^2이 아니라 그것보다 훨씬 클 것 같습니다.

문제에서 칸막이를 놓는 적절한 위치를 찾는다면, 이 문제는 또다시 나머지 뒤 숫자들을 쪼개는 갯수를 구하는

subproblem으로 회귀하게 됩니다.

이를 메모이제이션으로 나중에 또 계산해주지 않기 위해서 저장해 놓아야 합니다.

즉, 다이나믹 프로그래밍으로 구해야 할 것으로 생각됩니다.

tjrdnd0511   4년 전

답변 감사합니다. 음.. 그냥 구한건 아니고 dp로  한다고 하긴 했는데 안돼서 보니까 getchar()로 입력받는 경우에 개행 문자가 입력되어야 종료 되게 하면 입력이 종료가 안돼서 문제가  된 것 같습니다.  scanf로 해서 다시 해보니까 시간 초과는 안 떠서 다시 풀어봐야 할 거 같습니다. 다시 한번 답변 감사합니다. 

댓글을 작성하려면 로그인해야 합니다.