본문 바로가기

개발(합니다)/알고리즘&코테

알고리즘 단계별로 풀어보기 : BOJ-1152(단어의개수)

반응형

문제(출처)

영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 

이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 

단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.


입력

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 

이 문자열의 길이는 1,000,000을 넘지 않는다. 

단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 

또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다.


출력

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


예제 입력1

The Curious Case of Benjamin Button


예제 출력1

6

예제 입력2

 Mazatneunde Wae Teullyeoyo


예제 출력2

3



내 풀이

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

public class Main {
    public static void main(String args[]) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        try {
            String[] str = br.readLine().split(" ");
//          공백을 기준으로 분리하여 배열에 저장합니다.
            int count = 0;
//          문장을 세기위해 선언합니다.
            for(String i : str) {
//              배열을 순서대로 출력합니다.
                if(!i.equals(""))
//                  빈 값이 아닌경우에만 문장의 개수를 세어 증분합니다.
                    count++;
            }
            bw.write(String.valueOf(count));
            bw.flush();
            bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


내 풀이 해석

공백을 기준으로 분리하여 String 배열에 저장합니다.
반복문으로 배열 값을 확인하고 빈 값이 아닌 경우에만 개수를 세어 출력합니다.



반응형