[백준/JAVA]1152번 단어의 개수

2025. 1. 17. 13:54·코딩테스트/백준

문제

https://www.acmicpc.net/problem/1152

문장에서 단어의 개수를 세는 문제였다.

문제 풀이

1. StringTokenizer

import java.io.*;
import java.util.*;
public class Main{
	public static void main(String[] args) throws IOException{
	    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));	   
		StringTokenizer token=new StringTokenizer(br.readLine()," ");
		System.out.print(token.countTokens());
	}
}

2. split

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();
        String[] words = input.trim().split(" ");
		System.out.print(words.length);
    }
        br.close();
    }
}

split을 사용하면 계속 답이 틀리는 이유는 공백을 입력했을 때, 결과가 1이 나오기 때문이다(┬┬﹏┬┬) 이는 split의 동작 방식 때문인데, 과정은 다음과 같다.

  1. " "를 trim()하면 ""가 된다.
  2. split(" ")를 호출하면, 빈 문자열을 기준으로 분리할 수 있는 단어가 없으므로, 결과는 [""](하나의 빈 문자열)이다.
  3. 따라서 words.length는 1이 된다.

이와 같은 동작을 방지하기 위해, 입력이 공백만 있는 경우를 체크해야 한다. 아래는 이 문제를 해결한 코드이다.

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();
        
        //입력이 null이거나 공백만 있는 경우
        if (input == null || input.trim().isEmpty()) {
            System.out.print(0);
        } else {
            String[] words = input.trim().split("\\s+"); //여러 개의 공백을 나눔
            System.out.print(words.length);
        }
        
        reader.close();
    }
}

이 코드에서는 input.trim().isEmpty()를 사용하여 입력이 공백만 있는 경우를 체크하고, 이 경우 0을 출력하도록 했다. 이렇게 하면 " "와 같은 입력에 대해 0이 출력되도록 할 수 있다!

'코딩테스트 > 백준' 카테고리의 다른 글

[백준/JAVA]5622번 다이얼  (0) 2025.01.17
[백준/JAVA]2908번 상수  (0) 2025.01.17
[백준/JAVA]2675번 문자열 반복  (0) 2025.01.16
[백준/JAVA]10809번 알파벳 찾기  (0) 2025.01.16
[백준/JAVA]11720번 숫자의 합  (0) 2025.01.16
'코딩테스트/백준' 카테고리의 다른 글
  • [백준/JAVA]5622번 다이얼
  • [백준/JAVA]2908번 상수
  • [백준/JAVA]2675번 문자열 반복
  • [백준/JAVA]10809번 알파벳 찾기
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[백준/JAVA]1152번 단어의 개수
상단으로

티스토리툴바