1107번 - 리모컨
In #1: 217 8 0 1 2 4 5 6 7 9 Out #1 : 119 Ans #1 : 117 (100 번 채널에서 117번 + 눌러 217로 이동)
In #2 : 97 6 1 3 5 6 7 8 Out #2 : 4 Ans #2 : 3 ( 100 번 채널에서 3번 - 눌러 97로 이동)
출력 하는 곳 조건들을 보면,
if ( ... ) print
if ( ... ) print
이러한 형태인데,
if ( ... ) ans = min ( ans, ... )
if ( ... ) ans = min ( ans, ... )
print ans
최종적으로 한번 출력하면 조건에 따른 오류를 줄일 수 있을 것 같아요
댓글을 작성하려면 로그인해야 합니다.
rhy123123 1년 전 0
제가 생각할 수 있는 모든 경우는 포함했다고 생각했는데, 계속 15%에서 오답처리 됩니다.
n이 최대 500000이므로 int형 오버플로우도 아닐테고.. 감이 안잡히네요
(앞에 DEBUG 처리한 코드들은 무시하셔도 됩니다.)
52 : n=100일 때, 이미 목표 채널이므로 0
59: 목표 채널에 고장난 키가 없으므로 그대로 입력하면 끝, 자리수가 정답
66: 모든 키가 고장, 100에서 출발해야 함
73~: 일반적인 케이스
76: 목표 채널부터 위로, 아래로 동시에 뻗어나가서 고장난 키를 포함하지 않는 채널까지 도달
82: 아래로 가서 음수에 도달하면 위로 가는 것이 정답이므로 그에 대한 처리
92: 목표 채널부터 이동한 거리가 100에서 이동하는 것보다 클 경우 후자를 정답으로 함
101, 107: 정답 방향에 따른 처리
-- 이후 다른 질문들에서 찾은 반례 --
- lower, higher중에 100이 발생하는 경우 정답보다 3 큰 값이 출력됨(해결 / 15%)
- 고장난 키가 없지만, 100에서 접근하는 것이 더 빠른 경우(해결 / 15%)
- 다음 예제에 대한 출력이 잘못됨 (https://www.acmicpc.net/board/... line 24) (해결 / 35%)
[contain 함수에 number = 0이 들어갈 때의 예외처리, 99줄 100에서 갈 때와 비교시에 등호 추가]
(해당 게시글의 반례 전부 해결했습니다. 여전히 35%)
0
2
0 1