https://www.acmicpc.net/problem/1152
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#include <iostream>
#include <string>
using namespace std;
/*
문제를 보고 생각한 것은 단어를 찾는거니까, 단어 사이의 공백을 찾으면 되겠다고 생각.
문제에서 공백이 연속적으로 주어지지는 않는다고 했으니까..
어차피 처음부터 끝까지 한 번 순회는 해야한다.
고려할 사항은 아래 3가지로 생각했다.
1. 처음에 공백이 있는 경우
2. 마지막에 공백이 있는 경우
3. 문자열이 끝나는 시점
그래서 flag를 하나 생성해서 지금이 공백을 체크해야되는지, 문자열을 체크해야되는지를 설정함.
*/
int Solution(string &input)
{
int answer = 0;
// 이 플래그는 문자열을 만나면 true로 공백을 만나면 false로 바뀐다.
bool isCheckGap = false;
for(int loopCount = 0; loopCount < input.length(); loopCount++)
{
if(false == isCheckGap)
{
// 문자열을 만났으니까 true로 변경.
if(' ' != input.at(loopCount))
{
isCheckGap = true;
if(loopCount == input.length() - 1)
answer++;
}
}
else
{
// 문자열 이후에 공백을 만났으니까 false로 변경해주고 단어수 +1 해준다.
if(' ' == input.at(loopCount))
{
isCheckGap = false;
answer++;
}
// 문자열 이후에 공백은 아닌데, 끝이니까 단어수 +1 해준다.
if(' ' != input.at(loopCount) && loopCount == input.length() - 1)
answer++;
}
}
return answer;
}
int main()
{
string input = "";
getline(cin, input);
cout << Solution(input);
return 0;
}
| cs |
댓글 없음:
댓글 쓰기