Java/백준알고리즘

[Java] 백준알고리즘 #1152 단어의 개수

Sehyeok20 2023. 10. 2. 19:27
반응형

백준알고리즘 #1152 단어의 개수

단어의 개수를 찾는 얼핏 간단해 보이는 문제이다.

공백을 기준으로 단어를 찾기 위해 split()함수를 사용했다.

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String text = sc.nextLine();
        text = text.trim();
        String[] ary = text.split(" ");
        System.out.println(ary.length);

        sc.close();
    }
}

trim() 함수를 이용해 앞뒤 공백을 지우고 split()함수로 공백을 기준으로 잘라 ary 배열에 저장한 후,

이 배열의 길이를 출력해주는 코드이다. 

다만 이 경우, 제출시 '틀렸습니다' 라고 나오는데, 그 이유는 아무것도 없는 문자열(공백만 있는 문자열)의 경우 0이아닌 1을 반환해 주기 때문이다.

 

ary 배열은 예시의 'The Curious Case of Benjamin Button' 이라는 문자를 입력한 경우,

ary = ["The", "Curious", "Case", "of", "Benjamin", "button"]

와 같이 저장되어 이 배열의 길이를 반환했을 때 6이라는 결과값을 얻을 수 있지만,

빈 값 혹은 공백만으로 이루어진 문자를 입력했을 때의 ary 배열은

ary = [""]

이 되어 '빈 문자열' 을 원소로 갖는 배열이 되는 것이다. 이 때문에 이 배열의 길이는 1이 된다.

 

때문에 이를 해결해 주기 위해 입력받은 문자열에 trim()함수를 취한 결과가 빈 문자열인 경우를 따로 생각해주면 된다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String text = sc.nextLine();
        text = text.trim();
        String[] ary = text.split(" ");
        if (text.equals("")) {
            System.out.println(0);
        } else {
            System.out.println(ary.length);
        }

        sc.close();
    }
}

해결 완료.

반응형