반응형
문제 출처 :
https://www.acmicpc.net/problem/1152
알고리즘 분석 :
문제 해결에 필요한 사항
1. 구현
이 문제는 조심해야 될 것이 있다.
스페이스(' ')으로 단어를 구분하면 절대 안된다.
왜냐면 테스트케이스 중에 ' a b' 혹은 'a b '혹은 ' a b '같은 단어들이 있기 때문이다.
따라서 저러한 예외처리를 해 주던가, 아니면 단어를 O(n)만에 찾아나가면 된다.
방법은 다음과 같다.
1. 공백이 나타나면 공백이 사라질 때 까지 계속 인덱스를 증가시킨다.
2. 단어가 나타나면 단어수를 +1 해주고, 단어가 사라질 때 까지(공백이 나타날 때 까지) 계속 인덱스를 증가시킨다.
3. 위 두가지를 문자열의 끝까지 반복시킨다.
소스 코드 :
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 | #include <iostream> #include <cstdio> #include <string> using namespace std; int main() { string str; getline(cin, str); int len = str.size(); int ans = 0; for (int i = 0; i < len; i++) { while (i < len && str[i] == ' ') i++; if (i < len && str[i] != ' ') { ans++; while (i < len && str[i] != ' ') i++; } } cout << ans; return 0; } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
반응형
'Applied > 알고리즘 문제풀이' 카테고리의 다른 글
[7806번] GCD! (0) | 2017.08.12 |
---|---|
[7569번] 토마토 (0) | 2017.08.12 |
[2168번] 타일 위의 대각선 (0) | 2017.08.12 |
[8980번] 택배 (0) | 2017.08.09 |
[2011번] 암호코드 (2) | 2017.08.08 |