nkb7714   4년 전

C로 코딩하였구요 코딩하고 보니까 코드가 많이 더럽네요.. ㅜ-ㅜ

우선 1107번 질문 게시판에 올려주신 소중한 반례들 전부 테스트해봤는데 전부 맞게 나옵니다...

반례만 알아도 디버깅해보면서 수정하면 되는데 ..

하지만 제출을 하고 돌려보니 틀렸습니다가 나오구요..

모든 질문 글을 다 읽어보고 수정해봤지만 더이상 아이디어가 떠오르지 않습니다 대체 어느부분이 틀린건지..


우선 C1,C2,C3을 구해 경우를 나눠 최솟값을 출력하는 식으로 코딩했습니다.

C1 : 100번에서 시작해 +, -로만 목표채널로 가는 경우

C2 : 목표채널에서 +1, -1을 해가며 고장난 버튼을 포함하고 있지 않는 채널로 이동 후 + - 를 이용해 목표채널로 가는 경우

C3 : 목표채널이 고장난 버튼을 포함하고 있지 않는 경우

이렇게 나누어서 목표채널이 고장난 버튼을 포함하고 있지 않는 경우에는 C1, C3을 비교하여 출력, 목표채널이 고장난 버튼을 포함하고 있는 경우엔 C1, C2를 비교하여 출력했습니다.

또 가고자 하는 채널이 100번 인경우, 고장난 버튼이 10개인 경우, 고장난 버튼이 9개 인데 0을 제외하고 다 고장나있는 경우는 시간 단축을 위해 따로 코드를 짜주었습니다. 

질문글 1페이지 부터 마지막 페이지 까지 있는 모든 반례와 챙겨야 할 것들은 다 챙긴 것 같은데 대체 어느부분이 틀렸는지

저는 도저히 감이 오지 않습니다 코딩 고수분들의 회초리 기다리고 있습니다.

jaeokbr   4년 전

1 1 1 입력 하면

0으로 간 후 +

2로 간 후  - 가 가장 적은 버튼 횟수라

정답이 2가 나와야 할거 같은데

1이 출력 되는듯 합니다.

nkb7714   4년 전

@jaeokbr

0으로 간 후 + 에서 0으로 가는 카운트를 못세고 있었네요!!!! 그래서 1이 리턴됐던것 같습니다.

수정하니까 맞았네요 ! 정말 감사합니다 ㅠㅠ

테스트케이스 중에 경계값 케이스 잘 체크해본다고 했는데 1 1 1 을 미처 생각하지 못하고 있었네요..

이틀 고민했는데 정말 감사합니다 ^^ 복받으실꺼에요

다른분들 코드 보면 정말 간단한데 제건 너무 복잡하고 더러워보여서 이제 짧게 줄일 방법을 연구해 봐야겠습니다

다시 한번 감사합니다 ^^

626sunny   4년 전

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

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