728x90
SMALL
백준 문제 풀이: 1152 [단어의 개수]
문제 링크: https://www.acmicpc.net/problem/1152
문제 설명:
문자열이 주어질 때, 해당 문자열에 포함된 단어의 개수를 계산하는 문제입니다. 단어는 공백으로 구분되며, 입력 문자열의 처음과 끝에 공백이 있을 수도 있습니다. 단어는 공백이 아닌 문자로 이루어진 연속된 문자열입니다.
문제 해결 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine(); // 한 줄의 문자열 입력
int cnt = 0; // 단어 개수
int check = 0; // 현재 단어 상태를 확인 (1: 단어 중, 0: 공백)
// 문자열 순회
for (int i = 0; i < s.length(); i++) {
// 공백을 만나면 단어가 끝남
if (s.charAt(i) == ' ' && check == 1) {
check = 0; // 단어 상태 초기화
cnt++; // 단어 개수 증가
}
// 공백이 아닌 문자를 만나면 단어 상태 설정
if (s.charAt(i) != ' ') {
check = 1;
}
}
// 마지막 단어 처리 (문자열 끝에 공백이 없는 경우)
if (check == 1) {
cnt++;
}
System.out.println(cnt); // 결과 출력
}
}
예제 입력:
The Curious Case of Benjamin Button
예제 출력:
6
코드 설명
- 핵심 알고리즘: 문자열을 순회하며 공백으로 구분된 단어를 세는 방식으로 구현됩니다.
- 구현 세부사항:
check
변수를 사용하여 현재 문자가 단어의 일부인지, 공백인지 확인합니다.- 공백을 만나면 단어가 끝났다고 판단하고 단어 개수를 증가시킵니다.
- 문자열의 마지막에 단어가 남아 있는 경우를 처리하기 위해
check
값을 확인합니다.
- 시간 복잡도:
- 문자열의 길이를 n이라고 할 때, 문자열을 한 번 순회하므로 O(n)입니다.
결과
입력된 문자열에서 단어의 개수를 정확히 계산합니다. 공백 처리와 문자열 끝 처리에 주의하여 구현된 문제입니다. 추가적인 질문이나 개선 사항이 있다면 댓글로 알려주세요!
728x90
LIST
'BAEKJOON > 문자열' 카테고리의 다른 글
백준 2675번 [문자열 반복](JAVA)-yes6686- 티스토리 (0) | 2025.01.11 |
---|---|
백준 9243번 [파일 완전 삭제](C++) -yes6686- 티스토리 (1) | 2024.12.15 |
백준 1755번 [숫자놀이](C++) -yes6686- 티스토리 (0) | 2024.11.14 |
백준 10769번 [행복한지 슬픈지](C++) -yes6686- 티스토리 (0) | 2024.07.18 |
백준 9996번 [한국이 그리울 땐 서버에 접속하지](C++) -yes6686- 티스토리 (0) | 2024.07.16 |