PS

백준 11718, 11719 그대로 출력하기

areewar 2022. 3. 29. 23:05

C++ STL을 기본적으로 공부했으니 문제풀이를 통해서 공부하여 보겠습니다.

우선 입출력 기초를 공부하기 위해

https://www.acmicpc.net/problem/11718

 

11718번: 그대로 출력하기

입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시

www.acmicpc.net

https://www.acmicpc.net/problem/11719

 

11719번: 그대로 출력하기 2

입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄이 주어질 수도 있고, 각 줄의 앞 뒤에 공백이

www.acmicpc.net

를 풀어보았습니다.

 

두 문제 다 입력받은 그대로 출력하는 문제이고, 줄의 갯수를 알려주지 않기 때문에 끝나는 지점을 알 수 없습니다.

#include <iostream>
#include <string>

using namespace std;

int main(void) {
	string str;
	while (getline(cin, str)) {
		cout << str << endl;
	}
	return 0;
}

두 문제 모두 다음의 코드로 해결 할 수 있습니다.

여기서 getline()을 처음 사용해보았습니다.

getline을 사용하기 위해서는 #include <string>을 해주어야 합니다.

getline(cin, str)을 하게되면 str에 입력받은 값을 넣어주게 됩니다.

 

이때 while(getline(cin, str)) 이 부분이 중요한데, getline문을 while문의 조건문 안에 넣어버리면, 입력이 종료되고

EOF(end of file) 시그널이 전달됨과 동시에 getline 함수 자체가 false를 반환하므로 자동으로 프로그램이 종료가 되게 됩니다.

 

또한

통째로 입력한 후 통째로 출력하는 것이나

한 줄씩 입력하고 한 줄씩 출력하는 것이나 채점하는 프로그램 입장에서는 차이가 없다는 것을 알게 되었습니다.

입력스트림과 출력스트림이 다르기 때문입니다.

 

이상으로 포스팅을 마치겠습니다.