코딩 테스트

[코딩테스트] 백준 1152번: 단어의 개수

dev.jelee 2025. 6. 15. 02:01

# 문제

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

 

# 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BOJ1152_v1 {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String input = br.readLine(); // 입력 값 받아서 저장
    int num = 0; // 단어 개수 초기화

    if (input != null && !input.trim().isEmpty()) { // 입력 값이 null이 아니고 비어있지 않다면 실행
      String[] words = input.trim().split("\\s+"); // 연속된 공백을 처리할 때 사용 \\s+
      num = words.length; // 단어 몇 개인지 저장
    }

    System.out.println(num); // 출력
    br.close();
  }
}

 

# 입/출력 결과

 

# 과정

  1. BufferedReader 객체 생성
  2. String input에 입력값 받아서 저장
  3. int num에 단어 개수 담을 거라 초기화 시키기
  4. if문 사용하기
    • : input이 null이 아니고 빈 문자열이 아니라면 실행
    • : String[] words 생성하여 .trim() 사용해서 앞뒤 공백 자르고,
    • : .split("\\s+") 사용해서 연속된 공백도 깔끔하게 잘라내어 저장
    • : num에 words 길이 저장. (단어 개수)
  5. nums 출력하기
  6. BufferedReader .close() 하기

 

# 메모

  • .split(" ") 이렇게 공백 기준으로 나누어 저장할 때 사용했는데, 정확하게 연속된 공백이 있을 수도 있으니 이를 해결하는 방법은 .split("\\s+") 이렇게 작성하는 것이었다.
  • 처음에 입력 받은 값을 String[] input = br.readLine().trim().split(" ") 로 했다가 틀렸었다. 어느 부분에서 틀린 것인지 전혀 모르겠어서 chat-gpt 한테 물어보니 EOF 또는 빈문자열을 체크해야한다고 했다.
  • EOF가 무엇인지 찾아보고 정리해보았다.
    • EOF: End Of File, 파일이나 입력의 끝
    • 발생: 입력이 더 이상 존재하지 않을 때 발생
    • 예: 값 입력하지 않고 EOF 신호를 보냈을 때. 
      • macOS/Linux: Ctrl+D
      • Windows: Ctrl+Z + Enter
  • 생소한 것이 나와서 배우는 재미가 있었다. 까먹지 말고 연속된 공백은 .split("\\s+") 이렇게 작성하고, 정확히 입력을 어떻게 하는지 제시가 된 것이 아니라면 EOF와 빈문자열인지 체크하는 코드를 작성하기.