문제: https://www.acmicpc.net/problem/1152
이 문제는 c++에서 string을 어떻게 입력받는지를 아는지 모르는지에 따라 그 체감난이도가 매우 다를 것이다.
파이썬이용자라면 그냥 문자를 다 읽은 다음에 공백을 기준으로 split을 해야지! 라는 생각이 먼저 들 것 같다.
하지만 C++에서의 string은 문자열을 공백을 기준으로 입력받기 때문에, 단순히 몇번 입력받았는지만 count해도 될만큼 문제가 간단해진다.
여기서 한가지 더 고려해야할 것은 그럼 언제까지 받을지를 어떻게 설정하느냐의 문제이다.
그냥 계속 받으려면 while문을 써야할 것인데, 인풋이 종료됨을 어떻게 알 수 있을까?
이는 while(여기 안에 cin>>str을 넣어준다) 저렇게 ()안에 cin>>인풋 을 넣어줌으로써 인풋이 종료될때까지 받는다는 것을 표현할 수 있다.
또 다른 방법으로는 while(true)문 안에 if(cin.eof() == true) {break;} 를 넣음으로써 해결할 수 있다.
만약 cin이 eof(), end of file의 약자로 더 이상 인풋할 게 없으면 break;를 통해서 while문 밖으로 나갈 수 있다.
답안 코드는 다음과 같다.
// 1번 방법
#include <iostream>
using namespace std;
int main(){
string str;
int counter = 0;
while (true){
cin>>str;
if(cin.eof() == true) {break;}
counter +=1;
}
cout<<counter;
return 0;
}
// 2번 방법
#include <iostream>
using namespace std;
int main(){
string str;
int counter = 0;
while (cin>>str)
{
counter +=1;
}
cout<<counter;
return 0;
}
끝!
'Programming > 백준 문제풀이' 카테고리의 다른 글
백준 2798번 _ BlackJack 블랙잭 / Brute Force 브루트포스 (C++) (0) | 2020.02.29 |
---|---|
백준 11729번 _ Hanoi / recursion 재귀 문제 (C++) (0) | 2020.02.29 |
백준 1065 한수_ 함수(function)사용! (C++) (0) | 2020.02.29 |
백준 1002번 터렛 _ C++, python 두가지 풀이. (0) | 2020.02.29 |
백준 2884번 시계 세팅 문제 _ C++, python 두가지 풀이 비교. (0) | 2020.02.27 |