minjea917   3년 전

맞춘 사람들의 코드가 단순해서, 혹시나 하고 11719 번에 제출했던 코드를 내니 정답이 됐습니다.

검사되지 않는 사항이
1. 영어 대소문자, 숫자, 공백
-> 따옴표, 한글 등 특수문자나 제시되지 않은 다른 값들을 넣어도 여기에 대해선 검사하지 않는 거 같습니다.
2. 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.
-> 이 사항 역시 1번과 같습니다.

확인 부탁드립니다.

simm4256   3년 전

입력에 나오는 조건들은 채점시 입력으로 넣는 테스트 케이스들이 문제에 명시된 입력 조건에 부합한다는 의미입니다.

말씀하신 조건을 만족하는 테스트케이스들은 입력에 포함하지 않겠다고 명시해주는 겁니다.

simm4256   3년 전

뭔가 말을 좀 이상하게 했는데...

간단히 말씀드리면, 말씀하신 조건의 입력들은 애초에 입력으로 주어지지 않습니다.


예를 들어 두 수를 입력받고 두 수의 합을 출력하는 문제가 있다고 합시다.

이 때 두 수의 범위를 1000 이하의 자연수라고 문제에서 명시했다면

애초에 0 이하의 정수나 1001 이상의 정수는 고려 대상이 아닙니다.

여기서 두 수의 범위가 곧 입력 조건이 됩니다.


또 하나의 합 출력 문제가 있습니다.

이 문제는 위의 문제와 같지만, 두 수의 범위가 int 범위 내의 정수입니다.


분명 다른 문제지만, 정답 코드는 아래와 같은 코드 하나로 나타낼 수 있습니다.

1000 이하의 자연수가 int 범위 내에 있기 때문입니다.


입력 조건에 대해 다시 한 번 생각해보세요.

minjea917   3년 전

그렇다면 예외처리는 하지 않아도 된다는 말씀인가요?

simm4256   3년 전

minjea917   3년 전

그러면 문제푸는 의미가 없는 거 같은데요...
예외처리 해주는 것도 알고리즘의 한 요소 아닌가요?

simm4256   3년 전

입력 조건은 예외처리가 필요 없다는 거지 예외처리가 아예 필요 없다는 뜻은 아닙니다.

배열 인덱스 범위 제한이라던가, 초기값 설정이라던가 등등

문제에서 직접적으로 나타내진 않지만 반드시 필요한 조건 설정이나 예외 처리가 있습니다.


또 이런 경우도 있습니다.

위에 제가 예시를 든 1000 이하의 두 자연수의 합 문제에서 이런 조건이 추가될 수 있습니다.

'만약 입력으로 1000 이하의 자연수가 아닌 정수가 주어질 경우, "ERROR"를 출력한다.'

이 경우 잘못된 입력값에 대한 예외 처리를 하라고 문제에서 명시한 경우입니다.

당연히 이때는 소스가 조금 달라집니다.

아래 소스처럼 되겠네요.

simm4256   3년 전

https://www.acmicpc.net/proble...

이 문제의 경우 좌표의 범위가 0~100000입니다.

만약 현재 위치가 0이라면 x-1은 수행하면 안됩니다.

이는 문제에서 주어진 조건들로 유추할 수 있는 예외입니다.


입력 조건에 맞지 않는 입력의 예외 처리가 필요 없다는 것이지, 문제 풀이 과정에 있어 예외 처리가 불필요하다는 말은 아닙니다.

minjea917   3년 전

그냥 다 지키는 건 줄 알았는데 유동적으로 예외처리를 해야하는 건가 보네요.
어떤 인증 구조인지 좀 알겠습니다.
늦은 밤에도 시간 내서 답글 달아주셔서 감사합니다.

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