본문 바로가기
Programming/Algorithm

[백준] 1152번 : 단어의 개수 (Java)

by 안녕주 2021. 7. 21.

문제

영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.

입력

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

출력

첫째 줄에 단어의 개수를 출력한다.


코드

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine().trim(); //한 줄 다 받기 (공백 있는거 받는 경우는 nextLine)
        sc.close();
        
        if (str.isEmpty()) { //비어 있다면
            System.out.println(0);
        } else {
            System.out.println(str.split(" ").length);
        }
        
    }
}

풀이

아웅...뭔가 함수를 몰라서 구글링을 통해 풀었지만 틀렸던 문제다...! 이번에 trim()함수에 대해 처음 알게 되었다.

 

trim()함수는 문자열을 입력받거나 문자열을 합칠때 공백이 따라 들어오는 경우, 문자열 앞뒤에 있는 공백을 제거해준다.

사용법은 문자열.trim()이다.

trim()을 통해 문자열 전 후로 입력받을 수 있는 공백을 제거했기에 엔터에 대한 고려를 하지 않아도 된다.

 

원래 for문으로 chatAt(i) 형식으로 str.charAt(i) == 32 일경우 ...! 이런식으로 풀려고 했으나 여튼 틀렸다. 사실 생각하기에 어려운것은 아니였는데 머 여튼....그렇다... 구글링 선생님들 감사합니다.

댓글