본문 바로가기
  • 소소한 개발자 이야기
Software/알고보면 쓸모있는 코딩스킬

입력 개수가 주어지지 않을 때!? C++ EOF 사용법

by Siwan_Min 2020. 8. 1.
728x90

안녕하세요! 

오늘은 카카오랑 토스 코딩 테스트가 있었습니다. 

카카오는 매번 프로그래머스에서 보다가 이번엔 "HackerRank" 라는 곳에서 봤던대 이유는 모르겠습니다...

토스는 "groom" 에서 봤는데 서버가 터지는 문제가 발생했죠...

 

점점 날이 갈수록 코팅테스트 난이도가 올라가는 기분입니다 ㅠㅠ...하..........

 

프로그래머스는 입력이 자동으로 들어간 다음에 함수를 호출해서 결과를 리턴하는 형식이지만 

 

groom 같은 경우엔 입력부터 본인이 설계해야 하는데요 

 

요즘은 문제 난이도가 어려워지다보니 입력의 범위마저 주어지지 않는 경우가 많습니다. 

 

입력의 범위를 모르는데 어떻게 배열 같은 곳에 데이터를 받지? 하시는 경우 있는데 여러 가지 방법이 있는데

 

그중에 EOF 를 설명해 드리고자 합니다. 

 

"eof는 fstream 객체가 EOF를 만나면 상수 -1로서, 참값을 반환한다" 는 사실을 이용한 것입니다. 

 

다시 말해 

 

"eof는 파일의 끝에 도달하면 eof가 반환(-1)이 된다" 라는 뜻입니다.

 

바로 예시로 들어볼게요

 

 

입력


n개의 숫자가 공백을 기준으로 입력된다. (n은 주어지지 않음) 

출력


입력된  

 

예제 입력

12 23 31 4 52 15

예제 출력

12

23

31

4

52

15


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <stdio.h>
#include <vector>
#include <string>
 
using namespace std;
 
 
int main(){
     int idx=0;
     vector<int> lotto;
 
    while(!cin.eof()){
      int num;
      cin>>num;
      lotto.push_back(num);
    }
 
    for(int i = 0; i < lotto.size(); i++){
        cout<<lotto[i]<<endl;
    }
 
    return 0;
}

 

728x90

댓글