y_w2700   3년 전

1부터 34까지 수가 적힌 카드가 충분히 많이 있다. 이들 중 몇 장을 일렬로 늘어놓고, 그 숫자를 차례로 적었다.

나중에, 적어 놓은 것에 맞게 다시 카드를 늘어놓으려고 보니, 방법이 여러 가지일 수 있다는 것을 알았다.


즉 문제를 읽어보면, 

카드로 숫자를 만든다 -> 나온 숫자를 그대로 적는다 > 나중에 다시 만든다 의 순서대로 문제가 진행된 것인데, 카드로 조합할 수 없는 숫자가 나온다는건 오류가 있는 것 아닌가요?

146902336 와 같은 경우, 0앞에 4이상의 수가 나오는데, 이 경우 0을 출력해야 답으로 인정받는 것은 오류라 생각됩니다.

카드로 만들 수 없는 경우의 입력은 삭제되어야 된다고 생각합니다. 

입력 케이스 수정을 요청드립니다.

bupjae   3년 전

문제의 설명은 "여러 가지일 수 있다" 라고 되어 있습니다.

'방법이 하나 보다 많을 가능성도 있다' 라는 뜻이지, '방법이 하나 뿐이다' 또는 '방법이 전혀 없다'  일 가능성을 배제하고 있지 않습니다.

   

따라서, 이 문제에서는 답이 0 또는 1이더라도, 제시된 입력 조건 (40개 이하의 숫자열)을 지키는 데이터라면 올바로 처리할 수 있어야 합니다.

   

-----------------------------------------------------   

   

현업에서 프로그램을 작성할 때에는 잘못된 입력이 들어올 때에도 (적당한 오류 메세지를 출력하고 프로그램을 종료하는 등) 적절한 대응을 할 수 있어야 하지만 

이 사이트에 제시된 문제를 풀 때에는, (문제에서 '입력이 잘못되었으면 특정 메세지를 출력하시오' 라는 취지의 지시가 없다면) 입력 조건에 어긋나는 입력을 따로 처리할 필요가 없습니다.

예를 들어. '입력으로 1 이상 1000 이하의 정수가 주어진다' 라고 되어 있는 문제에서, 실제 주어진 입력이 1001 인 경우, 또는 아예 "randomstring" 같은 문자열이 주어질 경우를 따로 고려할 필요가 없다는 뜻입니다. 

jh05013   3년 전

원글의 주장에 맞지 않는 답변인 것 같습니다.

입력으로 주어지는 것은 "카드의 숫자를 차례로 적어 놓은 것"입니다. 146902336같은 입력은 "카드의 숫자를 차례로 적어 놓은 것"이 될 수 없으므로 입력으로 들어오지 않아야 하는데, 실제로 입력으로 들어오기 때문에 삭제해야 한다는 주장입니다.

jh05013   3년 전

참고로 확인해 보니 3년 전에 데이터 추가 요청으로 추가된 데이터 하나만 답이 0입니다.

bupjae   3년 전

jh05013 님 답변을 읽고 문제를 다시 읽어본 결과 제가 잘못 생각하고 있었다는 것을 알게 되었습니다.

제 원래 답변은 철회하도록 하겠습니다. 이야기의 흐름 유지를 위해 부득이하게 답변은 지우지 않고 남겨두겠습니다.

혼란을 끼쳐드려 죄송합니다.

djm03178   3년 전

https://www.acmicpc.net/board/... 와 비슷한 케이스인 것 같은데, 이때에는 문제에서 말한 과정 자체를 지키지 않은 입력이 주어질 수 있는 것으로 명시적으로 표기하는 것으로 처리되었습니다.

y_w2700   3년 전

bupjae jh05013 djm03178

글 읽어주시고 댓글 달아주신 분들께 감사의 말씀드립니다.

jh05013님의 댓글처럼, 글 https://www.acmicpc.net/board/... 과 같은 재채점 케이스가 문제의 설명을 위배하는 것 아닌가? 라는 질문이었습니다.

startlink   2년 전

재채점했습니다.

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