곽로그
[백준 1152, 자바] 단어의 개수 본문
반응형
문제
https://www.acmicpc.net/problem/1152
접근방법
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();
}
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 15649, 자바 ] N과 M (1) (0) | 2020.03.21 |
---|---|
[백준 15650, 자바] N과 M (2) (0) | 2020.03.21 |
[백준 2941, 자바] 크로아티아 알파벳 (0) | 2020.03.15 |
[백준 5622, 자바] 다이얼 (0) | 2020.03.15 |
[백준 1326, 자바] 그룹단어 체커 -- 다시 (0) | 2020.03.12 |
Comments