작성
·
260
0
안녕하세요 큰돌님.
피드백을 받아 코드를 수정하게 되었는데요,
http://boj.kr/8d5d8fc5966444f7936b60ca17b295ee
예제는 맞았지만 시간초과가 나오게 됐습니다.
제가 작성한 코드의 경우는..
각 칸마다 사다리를 놓는 경우, 놓지 않는 경우를 나눠서 백트랙킹을 했는데요,
이렇게 되면 2^(n*h)가 되는 거라고 이해했는데요,
질문) 제가 작성한 코드의 시간복잡도가 2 ^ (n*h)가 되는게 맞나요?
답변 1
0
안녕하세요 완섭님 ㅎㅎ
네 대략 그렇습니다.
이 문제는 일단 사다리를 세우고 또는 안세우고 아니라 그 자리에 사다리를 세우고 >>> 넘기는 식으로 코드를 짜는게 중요합니다.
완섭님 코드를 돌리면 시간초과가 나는데요. 사실 이 코드에는 틀린 부분 또한 있습니다.
처음에는 완섭님 코드베이스로 수정해서 맞았습니다 뜨게 하려고 했는데
계속해서 이상하게 안되가지고
그냥 제 코드 베이스로 완섭님 코드처럼 한번 만들어봤습니다.
한줄에 사다리를 2개 이상을 놓아야 하고 또 사다리 같은 경우 겹치는 그 경우의 수를 "중복해서" 확인하지 않으면 해당 경우의 수를 확인하지 못하는 경우의 수가 나타납니다.
이를 해결하는 코드는 다음과 같습니다.
제 코드를 >> 완섭님 코드와 유사하게 구축헀습니다.
너무 상세한 답변 감사합니다.