[코딩테스트] 백준 1152 단어의 개수-C++
문제 풀이
- C++에서는 문자열의 공백을 구분하기 어렵다. 문자열을 tokenize를 하는 경우를 이번 기회를 통해서 정리해보았다.
- strtok, strtok_s가 가장 먼저 떠오른 함수이다. string.g 헤더에 포함되어있는데 막상이를 이용해서 돌려보면 "unsafe"하므로 이용하지 않도록하라는 오류가 난다.
- 따라서 sstream의 istringstream을 이용하기로 한다.istringstream은 문자열을 parsing할때 이용한다.
- getline을 통하여 string의 입력을 line으로 받는다.
- istringstream ss(s) 를 통하여 문자열 s를 파싱 할 것으로 등록한다.
- 잘린 string을 담을 변수 parsed를 이용하여 ss>>parsed 하면 parse가 1번 진행된다.
- parse를 반복하기 위해 while문에 입력하였다.
- 이번 경우는 공백을 이용하여 parse하였으나, 구분자가 있는 경우 다음과 같이 처리한다.
ss를 이용하여 getline을 반복한다.
getline에서 delimiter을 이용할 때, 작은 따옴표('')를 이용해야함을 주의하자.
큰 따옴표는 문자열, 작은 따옴표는 문자를 의미한다.
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main() {
string s;
getline(cin, s);
istringstream ss(s);
string parsed;
while (getline(ss,parsed,','))
{
cout <<parsed<< "\n";
}
return 0;
}
c++ 코드
#include<iostream>
#include <sstream> // istringstream
#include <string>
using namespace std;
int main() {
//string의 최대 길이 4294967294
string s;
string parsed;
getline(cin, s);
istringstream ss(s);
int count = 0;
while (ss >> parsed) {
count++;
}
cout << count;
return 0;
}
Author And Source
이 문제에 관하여([코딩테스트] 백준 1152 단어의 개수-C++), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@secdoc/코딩테스트-백준-1152-단어의-개수-C저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)