noble5712   3년 전

위 코드는 틀린거고 아래는 맞았는데, 로직은 같아보이는데 무슨 차이가 있을까요?

dldyddlwl   3년 전

반례]

3

9

0 1 2 3 4 5 7 8 9

틀린 코드] 3

맞는코드] 4

이유) 

아래의 solve함수에 있는 if문

i == 0 이고 고장난 버튼에 0이 없는 경우에 길이를 1로 합니다.

그런데, i == 0 이고 고장난 버튼이 0이 아닌 경우, length가 0이 되고 math.abs(target-i) 를 리턴하게 되고, 이건 위의 반례와 같은 경우에 위험합니다.

맞는 코드의 경우 length가 0인 경우는 애초에 확인도 하지 않는 방식을 취하고 있습니다.

 

따라서, solve 함수에서 length가 0인 경우에 처리할 수 있는 것이 필요합니다. 그리고 자꾸 런타임에러가 나길래 살펴보니, 뭔가 입력에 문제가 있더라고요. (아마도 토큰?)

맞는 코드의 입력 부분(스캐너)을 사용하니까 잘 나왔습니다! 저도 계속 확인하느라 답변이 늦어 죄송합니다!

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