728x90
SMALL
백준 문제 풀이: 1152 [단어의 개수]
문제 링크: https://www.acmicpc.net/problem/1152
문제 설명:
영어 대소문자와 공백으로 이루어진 문자열이 주어질 때, 문자열에 포함된 단어의 개수를 출력하는 프로그램을 작성하세요. 단어는 공백으로 구분됩니다.
입력 조건:
- 첫째 줄에 문자열이 주어집니다. 문자열의 길이는 1 ≤ 길이 ≤ 1,000,000입니다.
- 문자열은 공백으로 시작하거나 끝날 수 있습니다.
출력 조건:
- 문자열에 포함되어 있는 단어의 개수를 출력합니다.
문제 해결 코드
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s); // 공백 포함 입력받기
int cnt = 0; // 단어 개수
for (int i = 0; i < s.size(); i++) {
if (s[i] != ' ' && (i == 0 || s[i - 1] == ' ')) {
// 단어의 시작 조건: 현재 문자가 공백이 아니고, 이전 문자가 공백이거나 문자열의 첫 문자일 때
cnt++;
}
}
cout << cnt << endl; // 단어 개수 출력
return 0; // 프로그램 정상 종료
}
코드 설명
위 코드는 문자열에서 단어의 개수를 계산하고 출력합니다.
- 입력 처리:
- `getline`을 사용하여 공백이 포함된 문자열을 입력받습니다.
- 단어 개수 계산:
- 현재 문자가 공백이 아니고, 이전 문자가 공백인 경우 단어의 시작으로 간주합니다.
- 문자열의 첫 문자가 공백이 아닐 때도 단어로 처리합니다.
- 출력: 단어의 개수를 출력합니다.
시간 복잡도 분석:
- 문자열을 한 번 순회하며 단어의 개수를 계산하므로 시간 복잡도는 O(N)입니다.
결과
다음은 입력 예시와 출력 결과입니다:
입력:
The Curious Case of Benjamin Button
출력:
6
입력:
Hello World
출력:
2
입력된 문자열의 단어 개수를 공백을 기준으로 정확히 계산합니다.
다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!
728x90
LIST
'BAEKJOON > 문자열' 카테고리의 다른 글
백준 2789번 [유학 금지](C++) -yes6686- 티스토리 (0) | 2024.05.06 |
---|---|
백준 1181번 [단어 정렬](C++)-yes6686- 티스토리 (1) | 2023.12.21 |
백준 5525번 [IOIOI](C++)-yes6686- 티스토리 (0) | 2023.12.21 |
백준 2675번 [문자열 반복](C++)-yes6686- 티스토리 (1) | 2023.12.18 |
백준 1157번 [단어 공부](C++)-yes6686- 티스토리 (0) | 2023.12.16 |