gogowjdgo1   5년 전

1.다리를 놓을 수 있는 장소의 수가 m

놓아야할 다리의 수가 n(0~3) 이면

mCn의 조합을 통해 다리가 놓아지는 모든 경우의 수를 점검합니다.

2.n은 0에서 시작하여 3으로 올라가면서 점검하므로

중간에 정답이 나온다면 그 뒤의 case는 점검할 필요가 없습니다.

그렇기에 재귀함수를 빠르게 종료시키면서 for문을 빠저나온후

곧바로 정답을 출력하도록 했습니다.

3.그리고 메모리를 대량으로 사용함으로써 시간을 단축하기로 하였으며

조합의 각 case가 완료되고나서 다리를 놓는 방식이 아닌.

재귀함수의 매 호출마다 다리를 하나씩 놓아가면서,

새로 놓은 다리와 이웃한 다리가 있다면 해당 경우의 수는

곧바로 버리는 방식으로 진행하기로 하였습니다.


위와같은 원칙을 고수하도록 하면서 코드를 짰는데도 자꾸 시간초과가 나오네요

인터넷에서 다른사람들이 쓴 코드와 전체적으로 비슷해 보이긴 한데

뭐가 문제인지 감이 안잡힙니다....

어디서 무한루프를 도는것 같지는 않은데

뭐가 문제일까요?

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