StringTokenizer
String StringTokenizer(String str) | white space, new line, tab 등을 기준으로 token을 나눈다. |
String StringTokenizer(String str, String delim) | delim을 기준으로 token을 나눈다. |
String StringTokenizer(String str, String delim, boolean flag) | flag가 true이면 delim도 token으로 포함해서 나눈다. flag가 false이면 delim은 token으로 포함하지 않는다. (default) |
boolean hasMoreTokens() | token이 더 있는지 확인 |
boolean nextToken() | 다음 token 반환 |
Object hasMoreElements() | token이 더 있는지 확인 (반환 Object) |
Object nextElement() | 다음 token 반환 (반환 Object) |
int countToken() | 남아있는 token 수 |
Split
public String[] split(String regex) | regex를 기준으로 String[]을 반환 |
public String[] split(String regex, int limit) | limit>0이면, String[]의 갯수가 limit에 제한된다. limit=0이면, 빈 공백은 배열에 포함되지 않는다.(default) limit<0이면, 빈 공백도 배열에 포함시킨다. |
"boo:and:foo" | ||
Regex | Limit | Result |
: | 2 | { "boo", "and:foo" } |
: | 5 | { "boo", "and", "foo" } |
: | -2 | { "boo", "and", "foo" } |
o | 5 | { "b", "", ":and:f", "", "" } |
o | -2 | { "b", "", ":and:f", "", "" } |
o | 0 | { "b", "", ":and:f" } |
o를 기준으로 왼쪽과 오른쪽을 분리하는데, limit<0은 빈 공백도 배열에 포함시키는데, 이 때 오른쪽 문자열이 공백일 때 포함시킨다. 왼쪽은 공백 시 무조건 ""이 남아야 한다. 따라서 오른쪽에 남는 문자열에 대해서만 limit<0 인지 limit=0에 따라서 달라진다.
백준 7785 회사에 있는 사람
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
StringTokenizer st = new StringTokenizer(line);
//1번
System.out.println(st.countTokens());
//2번
int num=0;
while(st.hasMoreTokens()) {
String a = st.nextToken();
num++;
}
System.out.println(num);
//3번
String[] array = line.trim().split(" ");
if(line.isEmpty()) {
System.out.println(0);
} else {
System.out.println(array.length);
}
}
}
[풀이방법 1]
StringTokenizer의 countTokens()를 통해 바로 토큰의 개수를 구할 수 있다.
[풀이방법2]
StringTokenizer의 hasMoreTokens()를 통해 토큰의 존재여부를 확인하고 nextToken()을 통해 토큰을 확인하다. while문 안에 hasMoreTokens()는 nextToken()으로 토큰을 사용하여야 다음 토큰을 확인한다.
[풀이방법3]
split을 이용한다. trim()을 통해 문자열의 앞 뒤 공백을 제거한다. " "의 문자열이 입력되면 split은 " "하나를 생성하여 숫자를 카운트 하기 때문에 isEmpty()를 통해 검사한다.
반응형
'Algorithm' 카테고리의 다른 글
백준 11720 / 숫자의 합 (0) | 2020.07.09 |
---|---|
백준 10989 / 수 정렬하기 3 (0) | 2020.07.09 |
백준 11652 / 카드 (0) | 2020.07.09 |
백준 10814 / 나이순 정렬 (0) | 2020.07.09 |
백준 11650 / 좌표 정렬하기 (0) | 2020.07.09 |