1107번 - 리모컨
게시판에 있는 반례란 반례는 다 넣어봤는데 다 통과하고요..
방식은..
N을 입력받습니다..
그리고 그 고장난 버튼들을 문자열로 저장하구요..
N에서 p(0, 1, 2, 3...) 만큼 차를 벌리면서..
그 차를 출력하고 끝냅니다.. (해당 수에서 +나 -버튼으로 해결 가능)
2. 그게 아니라면
그 수를 문자열로 바꾼 뒤 거기서 고장난 버튼이 있는지를 찾습니다
이걸 값 나올 때까지 반복합니다. (숫자 버튼으로 절대 못 간다면 위의 1번 조건에서 걸립니다 - 결국 +, -버튼으로만 가고 끝나지 무한 루프에 걸리는 경우 존재x)
그 후 수 문자열의 길이(버튼 수)와 p (그 수로 이동한 뒤의 + -버튼 개수)을 더한 값을 출력합니다
예를 들어
5477
3
5 6 8 의 경우에
5 6 8의 입력을 "568"로 받아들인 후
5477은 100이 아니니까
"5477"로 바꿔주고
p 를 0으로 설정해주고 나서 (원래 1이었는데 5 / 2 / 4 6 같은 케이스 때문에 0으로 바꿈)
"5477"안에 '5'가 있는지, '6'이 있는지, '8'이 있는지 for로 검사해서
뭐가 나오기만 하면 바로 1을 리턴
p를 증가시키고
이를 "5476", "5478"에서/ "5475", "5479"에서 0이 리턴될 때까지 반복
이후 0이 리턴된 문자열의 길이와 p를 합친 것을 출력하는 겁니다. (이동 가능한 채널 버튼 수와 거기서부터 목표 채널까지의 차)
수가 0 밑으로 내려가는 경우엔 '0'이 되게 고정합니다.
예외로 99이나 98에다가 모든 버튼이 고장난 경우엔
차가 p+1보다 같거나 작으므로 (p의 초기값이 0이므로 케이스의 개수가 p+1부터 시작)
+, -로 이동할 수 있는 것으로 간주,
p+1을 출력하고 끝냅니다.
이게 로직이 틀린 건지 뭔지 모르겠네요.
일단 가지 수가
정도가 되는데
혹시 제가 생각하지 못한 예나 게시판에서도 커버 못한 반례가 있거나
로직에 이상이 있는지 한 번만 봐주시길 바랍니다.
감사합니다.
162
9
0 1 3 4 5 6 7 8 9
정답: 62
오답: 63
경우는 맞게 나누신것 같은데, 버튼 누르는 횟수를 최소화하는데서 조금 방심하신 것 같습니다.
감사합니다 맞았습니다
댓글을 작성하려면 로그인해야 합니다.
jkjan 4년 전
게시판에 있는 반례란 반례는 다 넣어봤는데 다 통과하고요..
방식은..
N을 입력받습니다..
그리고 그 고장난 버튼들을 문자열로 저장하구요..
N에서 p(0, 1, 2, 3...) 만큼 차를 벌리면서..
그 차를 출력하고 끝냅니다.. (해당 수에서 +나 -버튼으로 해결 가능)
2. 그게 아니라면
그 수를 문자열로 바꾼 뒤 거기서 고장난 버튼이 있는지를 찾습니다
이걸 값 나올 때까지 반복합니다. (숫자 버튼으로 절대 못 간다면 위의 1번 조건에서 걸립니다 - 결국 +, -버튼으로만 가고 끝나지 무한 루프에 걸리는 경우 존재x)
그 후 수 문자열의 길이(버튼 수)와 p (그 수로 이동한 뒤의 + -버튼 개수)을 더한 값을 출력합니다
예를 들어
5477
3
5 6 8 의 경우에
5 6 8의 입력을 "568"로 받아들인 후
5477은 100이 아니니까
"5477"로 바꿔주고
p 를 0으로 설정해주고 나서 (원래 1이었는데 5 / 2 / 4 6 같은 케이스 때문에 0으로 바꿈)
"5477"안에 '5'가 있는지, '6'이 있는지, '8'이 있는지 for로 검사해서
뭐가 나오기만 하면 바로 1을 리턴
p를 증가시키고
이를 "5476", "5478"에서/ "5475", "5479"에서 0이 리턴될 때까지 반복
이후 0이 리턴된 문자열의 길이와 p를 합친 것을 출력하는 겁니다. (이동 가능한 채널 버튼 수와 거기서부터 목표 채널까지의 차)
수가 0 밑으로 내려가는 경우엔 '0'이 되게 고정합니다.
예외로 99이나 98에다가 모든 버튼이 고장난 경우엔
차가 p+1보다 같거나 작으므로 (p의 초기값이 0이므로 케이스의 개수가 p+1부터 시작)
+, -로 이동할 수 있는 것으로 간주,
p+1을 출력하고 끝냅니다.
이게 로직이 틀린 건지 뭔지 모르겠네요.
일단 가지 수가
정도가 되는데
혹시 제가 생각하지 못한 예나 게시판에서도 커버 못한 반례가 있거나
로직에 이상이 있는지 한 번만 봐주시길 바랍니다.
감사합니다.