cardbt   1년 전

안녕하세요.


쉬운문제에 대한 숏코딩이 어떻게 작성되고 있는지 궁금해서 쉬운 문제들을 풀고 숏코딩을 보고 있습니다.

A+B의 아주 간단한 문제인데요.

숏코딩이 이해가 안되서 여러분들에게 여쭤보겠습니다.

우선, 허락없이 소스를 퍼온점에 대해서 작성하신 분에게 양해 부탁드립니다.


아래 소스코드를 동일하게 작성해서 돌리게 되면, 문제가 값 2개를 입력하면 바로 A+B에 대한 결과가 출력된다는 점과, 입력 케이스의 개수에 상관없이 종료 없이 계속 입력되는 점인데요.

결과는 맞습니다로 나옵니다.


왜 맞습니다로 나오는지 이해가 되지 않는군요.

입력

5
1 1
2 3
3 4
9 8
5 2

에 대해서 출력은

2
5
7
17
7

로 나와야하는데, 아래의 소스코드는 입력과 출력이 겹쳐서 나오게 되는데 왜 맞습니다가 되는건가요?


cardbt   1년 전

아무래도 테스트 케이스에 상관없이 입력의 종료는  EOF로 처리되는것 같네요.

그리고 입력과 출력은 결국 OUTPUT되는 프롬프트를 다른 위치라고 판단하는 것 같습니다.

개인이 테스트하는 환경하곤 조금 다르다고 봐야겠네요.

doju   1년 전

1. 콘솔 창에서는 편의상 유저가 타이핑하는 입력을 화면에 띄워 주고 있을 뿐이지, 입력 스트림과 출력 스트림은 별개입니다. 오히려 제시하신 코드와 같이 케이스 하나의 입력이 끝나자마자 해당 케이스에 대한 답이 출력되는 것이 권장되는 방식입니다.

2. 문제를 풀 때는 기본적으로 입력 데이터가 조건에 맞게 들어온다는 전제가 깔려 있습니다. 만약 테스트 케이스가 4개 주어진다고 써 놓고 A와 B 쌍이 3개나 5개 들어온다면, 이는 입력 데이터가 잘못된 것이며 고려할 필요가 없습니다.

그와 별개로 저 코드는 변수의 자료형 변환을 악용하여 코드를 극단적으로 짧게 줄인 것이므로 굳이 왜 답이 나오는지 이해하려 하실 필요는 없어 보입니다..

po10003   10달 전

설명을 해드리자면

gets함수는 입력받은 값을 반환합니다

만약 파일의 끝에 오게되면 EOF를 반환하죠.

c언어에서는 EOF는 0 부터 255사이 정수로 변환되지만

거의 모든 온라인저지 시스템은 EOF를 -1로 치환합니다

그래서 위 for문이 끝까지 돌게 됩니다!

이상 질문과 관계없는 숏코딩 풀이였습니다!

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