[백준] 1152: 단어의 개수
2022. 5. 30. 18:58ㆍTIL💡/Algorithms
https://www.acmicpc.net/problem/1152
1152번: 단어의 개수
첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열
www.acmicpc.net
문자열 조작은 항상 어려워서 브론즈 문제임에도 제대로 시도해보았다.
cin.getline vs. <string> 헤더의 getline
📌 cin.getline(char 배열, 최대 입력 사이즈)
cin의 멤버 함수이다.
char 배열에 스트림 사이즈만큼 마지막 글자에 NULL 문자가 포함된 한 줄의 문자 배열을 입력받는다.
📌 <string> 헤더의 getline(입력 스트림, string 객체, 구분자)
지정한 구분자(delimiter)을 만날 때까지 문자열을 입력받아 string 객체에 저장한다.
구분자의 디폴트 값은 '\n'이다.
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main() {
int answer = 0;
istringstream iss;
char buffer[1000000];
cin.getline(buffer, 1000000);
iss.str(buffer);
string str;
iss.seekg(0);
while(getline(iss, str, ' ')) {
// 공백을 입력받는 경우
if(str.length() == 0) {
continue;
}
answer++;
}
cout << answer << endl;
}
여기서 헷갈렸던 점 하나가 있는데 공백을 입력받으면 문자열의 길이가 공백문자로 1일 줄 알았는데 알고보니 길이가 0이었다.
'TIL💡 > Algorithms' 카테고리의 다른 글
[Codeforces] Shoe Shuffling (0) | 2022.06.01 |
---|---|
[백준] 11066: 파일 합치기(assert 사용으로 디버깅 🐛) (0) | 2022.05.31 |
[백준] 7579: 앱(feat. DP) (0) | 2022.05.30 |
[백준] 2306: 유전자(feat. DP 엣지케이스 주의) (0) | 2022.05.30 |
[프로그래머스] 단체사진 찍기 (0) | 2022.05.28 |