ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준] 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
Designed by Tistory.