반응형
https://www.acmicpc.net/problem/1152
문자열을 공백을 기준으로 나눠서 단어의 개수를 구하는 문제이다.
" "로 나눠서 구하면되는 쉬운문제로 보이지만 주의해야할점은 예제2 처럼 문자열 맨 처음 공백을 넣을경우 제외하고 구해야한다.
[풀이방법]
Scanner로 값을 받아 line에 문자열을 저장한 후 StringTokenizer를 통해 " " 로 line을 나눠준 후 countTokens()를 사용하면 값을 구할 수 있다.
import java.util.Scanner;
import java.util.StringTokenizer;
public class String1152 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
StringTokenizer st = new StringTokenizer(line," ");
System.out.println(st.countTokens());
/* String[] word = sc.nextLine().split(" ");
int cnt = 0;
if (word[0] .equals("")){//String배열 생성 시 주소값이 부여된다.
// 그렇기에 String타입을 선언했을때는 같은 값을 부여하더라도 서로간의 주소값이 다를 수있어 equals를 사용해야함.
cnt = word.length-1;
}else if (word.length==0){
cnt = 0;
}else {
cnt = word.length;
}
System.out.print(cnt);
*/
}
}
[풀이방법2]
주석처리한 부분을 살펴보자 문자열 배열을 통해 " "로 split()를 해서 문제를 풀었는데 답을 구할 수 있었지만,
split을 사용하면 백준에서 런타임에러가 발생했다.
내가 풀은방법은 해당배열 word[0]가 공백일 경우 배열의 길이 -1을 해주고 문자열이 아예없을경우 0으로 그 외의 경우는 배열의 길이는 나타내도록 풀이하였다.
반응형
'알고리즘 > 백준(BAEKJOON)' 카테고리의 다른 글
[JAVA] 백준 2750 수 정렬하기 (0) | 2021.10.12 |
---|---|
백준 1차원배열/4344 자바/평균은 넘겠지 (0) | 2021.09.29 |
[1157 자바] 단어공부: 알고리즘/ 백준 (0) | 2021.09.23 |
[10809 자바] 알파벳 찾기 [백준] (0) | 2021.09.16 |
백준 /11720 자바/숫자의 합 (0) | 2021.09.15 |