BOJ | 1152번

6453 단어 백준파이썬cppcpp

Python 풀이

print(len(input().split()))

input()으로 단어를 입력 받고 split()함수로 공백을 기준으로 나눠서 리스트 형태로 저장한다.

이제 만들어진 리스트의 len(length)을 출력하면 끝이다.

C++ 풀이

#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 추가해주면 된다.

좋은 웹페이지 즐겨찾기