곽로그

[백준 1152, 자바] 단어의 개수 본문

알고리즘/백준

[백준 1152, 자바] 단어의 개수

일도이동 2020. 3. 15. 02:58
반응형

문제

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

 

1152번: 단어의 개수

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

www.acmicpc.net

접근방법

String 클래스의 메서드를 활용하면 쉽게 풀 수 있는 문제다.

 

첫번째 풀이 : isBlank()함수를 사용

단어의 개수는 문장사이의 공백의 개수 +1 이다. 따라서 입력받은 문장의 공백의 개수를 카운팅하면 된다. 여기서 고려해야하는 사항은 두가지다. 첫번째로는 문장 앞뒤로 공백이 있을 수 있다는 건데, 이는 trim함수를 사용하면 된다. 그리고 두번째는 문장이 공백으로 주어지는 경우다. 이 경우는 isBlank함수를 쓰면 된다. (하드코딩으로 하는 방법은 char= ' ' ) isBlank는 자바11부터 제공되는 함수하고하니 백준에 제출할때는 컴파일 모드에서 java11을 선택해야한다. 

 

두번째 풀이 :trim()함수만 사용

 isBlank()를 사용하지 않는 경우에는, trim()함수 후 String의 길이가 0 인경우에 공백으로 처리하면 된다. 

 

세번째 풀이 : split()함수를 이용

 String을 입력받을 때 split함수(구분자 " ") 를 사용해서 String배열로 입력받는다. String 배열의 크기를 출력한다. 

 

 

코드

isBlank를 사용한 경우

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 IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int count = 0;
		
		String word = br.readLine();
		word = word.trim();
		
		count = countWord(word);
		
		bw.write(Integer.toString(count));
		bw.close();
		
	}
	public static int countWord(String word) {
		int count = 0;
		
		if(word.isBlank()) {
			return 0;
		}
		else {
			for(int i =0;i<word.length();i++) {
				char alphabet = word.charAt(i);
				if(alphabet ==' ') {
					count ++;
				}
			}
			return count+1;
		}
	}
		
}

trim() 만 사용한 경우

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 IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int count = 0;
		
		String word = br.readLine();
		word = word.trim();
		
		if(word.length()==0) {
			bw.write("0");
		}
		else {
			for(int i = 0; i<word.length();i++) {
				char alphabet = word.charAt(i);
				if(alphabet == ' ') {
					count++;
				}
			}
			bw.write(Integer.toString(count+1));
		}
		
		bw.close();
		
	}
	
}

split()함수 이용

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 IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int count = 0;
		
		String word = br.readLine();
		word = word.trim();
		
		if(word.length()==0) {
			bw.write("0");
		}
		else {
			String[] words = word.split(" ");
			bw.write(Integer.toString(words.length));
		}
		bw.close();
		
	}
	
}
반응형
Comments