본문 바로가기
Algorithm/Baekjoon

[백준 알고리즘][자바] 1152번 : 단어의 개수

by hyunipad 2021. 5. 12.
반응형

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

 

1152번: 단어의 개수

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

www.acmicpc.net

 

백준 알고리즘 1152번

영어 대소문자와 공백으로 이루어진 문장을 문자열로 입력받고 그 문장의 단어 개수를 구하는 문제입니다.

입력받은 문장의 공백은 연속해서 나오는 경우는 없고 단어의 앞과 뒤에는 공백이 있을 수 있습니다.

 

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) throws NumberFormatException, IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		String sentence = br.readLine().trim(); // 입력 받은 문자열을 trim()을 통해 앞뒤 공백 제거
		String[] arr = sentence.split(" "); // 띄어쓰기를 기준으로 스플릿
        
		// 문장은 공백과 단어로 구성되어 있기 때문에 공백만 입력되는 것을 생각 해줘야 한다
		if(sentence.equals("")) { .
			bw.write(String.format("%d", 0));
		}else {
			bw.write(String.format("%d", arr.length));
		}
		
		br.close();
		bw.flush();
		bw.close();
	}
}

위의 알고리즘을 기준으로 각자만의 방식으로 if문 등을 수정한다면 조금 더 빠른 런타임을 가져갈 수 있습니다.

 

처음 알고리즘을 떠올렸을 때 그리 어렵지 않다고 생각했는데, 실제로 풀었을 때 문장이 하나의 공백으로 이루어질 수 있다는 것을 망각하여 오답이 나왔었습니다. 실제로 이 문제의 정답률이 28%인 게 그런 이유가 아닐까 싶네요.

반응형

댓글