mirusu400   3년 전

예제 입력의 1 16 같은 경우에는

1 -> 2(D) -> 4(DD) -> 8(DDD) -> 16(DDDD) 로 정해가 나오지만

1 -> 10 (L) -> 9(LS) -> 8(LSS) -> 16(LSSD) 로도 풀이가 됩니다.

이처럼 동일한 길이의 명령 나열이라도 다양한 해가 나올수 있습니다.

제가 아직 이 문제를 해결하지 못해서 두 개가 실제로 맞은 답인지 모르고, 대부분 BFS if문 검사시 D부터 하기 때문에 위와 같은 출력이 나오기 어렵지만, 출력 조건에 이러한 항목에 대해 명시되지 않았으므로 수정이 필요하다고 생각합니다

위 두 풀이 모두 정답이라면, 출력 란에 최소한의 명령어 나열이 여러 개 존재하면 그 중 아무거나 출력한다. 라는 내용을 추가해주시면 될 듯 하고,

만약 DDDD만 정답이라면, 출력 란에 최소한의 명령어 나열이 여러 개 존재하면 D, S, L, R 순으로 정렬해 가장 첫번째 명령어를 출력한다.라고 수정해주시면 좋을 것 같습니다. 

mirusu400   3년 전

방금 문제를 해결했습니다. 

DDDD가 나오는 풀이 http://boj.kr/6781a7c6691745ad... 

LSSD가 나오는 풀이 http://boj.kr/ae0bde1180754339... 

둘다 맞았습니다  나오므로, 출력 항목에 최소한의 명령어 나열이 여러 개 존재하면 그 중 아무거나 출력한다. 라는 내용을 추가해주시면 감사하겠습니다

djm03178   3년 전

있으면 명확하긴 한데, 없어도 별로 상관 없다는 입장입니다. 답이 하나라고 정해져 있다는 표현이 없으므로 여럿일 수 있는지는 문제 푸는 사람이 스스로 판단해야 하는 영역이고, 그 중 하나만 출력하라는 내용이 없어도 하나를 출력해야 한다는 사실이 특별히 모호하게 생각되지는 않습니다.

mirusu400   3년 전

안녕하세요.

물론 문제를 이해하는 사람의 따라 모호하거나 명확하다고 판단하는게 다르겠지만

저도 두 소스코드를 돌리기 전까지 후자의 풀이가 맞았는지 몰랐고,

https://www.acmicpc.net/board/view/38436

이전 질문 글에서도 저와 같은 생각을 했던 분이 계시는 걸 보면 많은 분들이 이를 애매하거나 모호하다고 생각하시는 듯 합니다.

imn00133   3년 전

제 생각에는 출력에 적어주는 것이 더 좋을 것 같습니다.

출력에 대해 말하는 유사한 문제를 보면,

https://www.acmicpc.net/problem/12970

같은 경우에도 출력이 여러 가지가 존재할 경우에는 그 중 하나만 출력하라고 하라고 되어 있습니다.

또한, 가능한 방법을 전부 출력해야할 경우,

https://www.acmicpc.net/problem/6603

전체를 출력하나, 방식을 말해주었습니다.

분류에 스페셜저지가 되어있긴 하나, 이것만으로는 완벽하니 않으니 명시적으로 표현해주면 혼란이 좀 더 줄어들 것 같습니다.

mirusu400   3년 전

몇달만에 와서 확인해본 결과, 문제 출력이 적당히 수정됐으므로 해결됨으로 바꾸겠습니다.

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