인프런 커뮤니티 질문&답변

dkstmdwns67님의 프로필 이미지
dkstmdwns67

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-O 부연설명

1-O 질문입니다.

해결된 질문

작성

·

593

0

안녕하세요 큰돌님. 강의를 듣고 있는 수강생입니다.

현재 큰돌님 코드에서 while(scanf("%d", &n) != EOF)라는 코드를 작성하셨는데 EOF를 생략하고 cin >> n의 형식으로 작성을 하니 틀렸다고 뜹니다. 이에 EOF를 왜 사용하지 않으면 틀리는지 궁급합니다.

다음은 코드입니다.

http://boj.kr/6b818f7ca5394a209864fb4063aa8811

 

 

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 67님 ㅎㅎ

혹시 코드 잘못 올리신 거 아니신가요?

공유하신 코드는 다음과 같습니다.

int c, r=1;
int cnt =1;
int main()
{
    cin >> c;
    while(r % c !=0)

 

확인 부탁드립니다.

 

dkstmdwns67님의 프로필 이미지
dkstmdwns67
질문자

코드를 잘못 올린거 같습니다. 그리고 찾아본 결과 cin 형식으로 EOF를 처리하는 방식이 있었습니다. 이에 코드를 수정하니 정답 처리가 되었습니다. 이에 EOF를 왜 사용하지 않으면 틀리는지 궁급합니다.

다음은 틀린 코드 입니다.

http://boj.kr/54b631ff10854a26aed8665a89034ab7

그리고 이건 수정하여 정답 처리 된 코드입니다.

http://boj.kr/e78ddcc0976e40199c28166fe61fffab

큰돌님의 프로필 이미지
큰돌
지식공유자

이 문제는 입력이 무한히 주어지는 코드입니다.

따라서

    cin >> c;
    while(r % c !=0)

이렇게 하게 되면 해당 부분을 충족시키지 못합니다.

이부분은 r과 c의 모듈러한 값이 0 일 때 이부분을 종료시키는 코드니까요.

 

교안내의 다음 부분을 참고 부탁드립니다.

Q. 문제에서 입력의 끝을 정하지 않은 경우

dkstmdwns67님의 프로필 이미지
dkstmdwns67
질문자

답변 감사합니다!

dkstmdwns67님의 프로필 이미지
dkstmdwns67

작성한 질문수

질문하기