Algorithm/Java

[백준] n.1152 - 문자열 속 단어 개수 세기 (공백 유의)

보라해바라기 2023. 5. 21. 19:15
SMALL

1. 문제
https://www.acmicpc.net/problem/1152

 

1152번: 단어의 개수

첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열

www.acmicpc.net

 

2. 주요 개념
- 스캐너, nextLine()

- trim(), split()

- isBlank()

- arr.length



3. 나의 풀이 (*은 잘 안풀린 부분)

import java.io.*;
import java.util.*;

public class Main {

  public static void main(String[] args) {

    Scanner s = new Scanner(System.in);

    String str = s.nextLine();
    // 문자열 입력 
    // * nextLine으로 받아야 함!

    String no_blank_str = str.trim();
    // * 문자열 앞뒤 공백 제거!
    
    String[] arr = no_blank_str.split(" ");
    // * split된 단어들은 "String 배열"에 저장됨

    int result; // 최종 단어 갯수

    // * 공백 하나만 포함된 문자열 ex. " " > 답이 0이 되어야 함.
    if (no_blank_str.isBlank()) {
     result = 0;
    // * isBlank > 공백 여부 확인
    }
    else {
      result = arr.length;
    }

    System.out.println(result);

 }

}



4. 짚고 넘어가기!

- nextLine을 이용하여 문자열 받기 (개행 문자로 구별되기에)

- trim() > 문자열 앞/뒤 공백 제거 (문자열 중간 공백은 제거 X)

- split() > 문자열 중간 공백 제거를 위해 사용 > 문자열 배열에 저장

- isBlank() > 대상의 공백 여부를 판단 > " " 입력값에 대한 판단을 위해 사용

728x90