인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

박완섭님의 프로필 이미지
박완섭

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

15684 사다리 조작 추가 질문입니다.

작성

·

260

0

안녕하세요 큰돌님.

 

피드백을 받아 코드를 수정하게 되었는데요,

http://boj.kr/8d5d8fc5966444f7936b60ca17b295ee

예제는 맞았지만 시간초과가 나오게 됐습니다.

 

제가 작성한 코드의 경우는..

각 칸마다 사다리를 놓는 경우, 놓지 않는 경우를 나눠서 백트랙킹을 했는데요,

이렇게 되면 2^(n*h)가 되는 거라고 이해했는데요,

 

질문) 제가 작성한 코드의 시간복잡도가 2 ^ (n*h)가 되는게 맞나요?

 

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 완섭님 ㅎㅎ

네 대략 그렇습니다.

이 문제는 일단 사다리를 세우고 또는 안세우고 아니라 그 자리에 사다리를 세우고 >>> 넘기는 식으로 코드를 짜는게 중요합니다.

완섭님 코드를 돌리면 시간초과가 나는데요. 사실 이 코드에는 틀린 부분 또한 있습니다.

처음에는 완섭님 코드베이스로 수정해서 맞았습니다 뜨게 하려고 했는데

계속해서 이상하게 안되가지고

그냥 제 코드 베이스로 완섭님 코드처럼 한번 만들어봤습니다.

한줄에 사다리를 2개 이상을 놓아야 하고 또 사다리 같은 경우 겹치는 그 경우의 수를 "중복해서" 확인하지 않으면 해당 경우의 수를 확인하지 못하는 경우의 수가 나타납니다.

이를 해결하는 코드는 다음과 같습니다.

제 코드를 >> 완섭님 코드와 유사하게 구축헀습니다.

http://boj.kr/dae3949c9e2240bc8f3c1bd9a2566ac7

박완섭님의 프로필 이미지
박완섭
질문자

너무 상세한 답변 감사합니다.

박완섭님의 프로필 이미지
박완섭

작성한 질문수

질문하기