print(len(input().split()))
input()
으로 단어를 입력 받고 split()
함수로 공백을 기준으로 나눠서 리스트 형태로 저장한다.
이제 만들어진 리스트의 len
(length)을 출력하면 끝이다.
#include <string> #include <iostream> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int cnt = 0; string S; getline(cin, S); for (int i = 0; i < S.size(); i++) { if (isalpha(S[i])) S[i] = tolower(S[i]); } for (int i = 0; i < S.size()-1; i++) { if (isalpha(S[i]) && !isalpha(S[i+1])) { // * cnt++; } } if (isalpha(S[S.size() - 1])) cnt++; cout << cnt; }
예전에 풀어놨던 거라 왜 다 소문자로 바꿨는지 기억은 안나지만 첫번째에 나오는 for문은 삭제해도 무방할 것 같다.
주석으로 // *
별표친 곳을 보면 입력 단어의 인덱스를 돌면서 현재 인덱스에 해당하는 문자가 알파벳이고 그 다음 문자가 알파벳이 아니면 cnt를 1 증가시킨다.
문제에서 입력은 대소문자 알파벳과 공백만 주어진다고 하였으므로 알파벳이 아니면 공백이라는 뜻이다. 그래서 알파벳이 아니면 단어가 끝난 것이므로 단어 개수 1 추가해주면 된다.