-
[백준] 1152 단어의 개수백준 2025. 2. 11. 14:04
- 문제 이해
1. 영어 대소문자 + 공백으로 이루어진 문자열이 주어졌다.
2. 단어는 공백 (" ")으로 구분되며, 공백이 연속되지 않는다.
3. 공백으로 시작하거나 끝날 수도 있다. -> 단어 개수를 제대로 세어야 한다.
4. 여러 번 등장하는 단어도 각각 세어야 한다.
5. 문자열의 길이는 최대 1,000,000 -> 입력이 매우 크므로 빠른 입력 처리가 필요하다.
- 코드
package CLASS1;
import java.util.Scanner;
public class 단어의개수 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);
String input = sc.nextLine().trim(); // 앞뒤 공백 제거
if (input.isEmpty()) { // 입력이 공백만 있는 경우에System.out.println(0);} else {String[] words = input.split(" "); // 공백을 기준으로 단어를 분리한다.System.out.println(words.length); // 단어 개수 출력}
sc.close();}}- 코드 설명
1. 입력 받기 (sc.nextLine())
- 공백 포함된 전체 문자열을 입력받는다.
2. 양쪽 공백 제거 (trim())
- 공백이 앞뒤에 있을 경우 trim()으로 제거한다.
3. 입력이 비어있을 경우 0 출력
- " "처럼 공백만 있는 경우 단어 개수는 0이므로 예외 처리한다.
4. split(" ")로 단어 분리
- " "(공백) 기준으로 단어를 나누고, words.length를 출력한다.
- 속도가 향상된 코드
import java.io.*;
public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String input = br.readLine().trim(); // 공백 제거
if (input.isEmpty()) {System.out.println(0);} else {System.out.println(input.split(" ").length);}
br.close();}}-> 입력이 1,000,000자까지 가능하기 때문에 BufferedReader를 사용하면 Scanner보다 속도가 훨씬 빠르다.'백준' 카테고리의 다른 글
[백준] 10989 수 정렬하기 3 (1) 2025.02.12 [백준] 1978 소수 찾기 (0) 2025.02.12 [백준] 3052 나머지 (0) 2025.02.11 [백준] 10809 알파벳 찾기 (1) 2025.02.11 [백준] 2675 문자열 반복 (0) 2025.02.10