문제
https://www.acmicpc.net/problem/1152
1152번: 단어의 개수
첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열
www.acmicpc.net
코드
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
getline(cin, s);
int length = s.length();
int num = 0;
if(length == 0 || (length == 1 && s[0] == ' ')){
cout << 0 << endl;
}
else{
for(int i=0; i < length; i++){
if(s[i] == ' '){
num += 1;
}
}
if(s[0] == ' '){
num -=1;
}
if(s[length-1] == ' '){
num -= 1;
}
cout << num+1 << endl;
}
return 0;
}
정리
getline()함수는 istream라이브러리와 string라이브러리에 각각 존재한다.
istream 라이브러리에 있는 getline() 함수는 뒤에 '\0'으로 끝나는 char* 형식을 따르는 클래식한 C언어 문자열을 따르는입력방법이고 string 라이브러리에 있는 getline()함수는 뒤에 '\0'으로 끝나지 않는 string 형식을 따르는 입력방법이다.
c++로 알고리즘 문제를 풀 때는 주로 string에 있는 getline()을 사용하는 것 같다.
이 문제 역시 string 라이브러리에 있는 getline()함수를 사용했다.
getline()은 string 문자열을 입력 받을 수 있는 함수이다.
공백을 포함한 입력을 받을 때 자주 사용된다.
참조
'Beakjoon > else' 카테고리의 다른 글
[백준] 1181번 단어정렬 (C++) - sort, compare (0) | 2022.01.02 |
---|---|
[백준] 10951번 A+B - 4 (C++) (0) | 2021.12.29 |
[백준] 2741번 N 찍기 (C++) (0) | 2021.12.29 |
[백준] 2577번 숫자의 개수 (C++) (0) | 2021.12.29 |
[백준] 1008번 A/B (C++) (0) | 2021.12.28 |