반응형
https://www.acmicpc.net/problem/2902
- 문제
- 문제 풀이
백준 2902번 KMP는 왜 KMP일까?는 브론즈 2 난이도의 구현 및 문자열 문제이다. 이 문제에서는 입력으로 한 줄의 문자열이 주어진다. 이 문자열은 이름이고 이름 사이사이가 하이픈으로 나누어져 있다. 그리고 각 이름의 첫 글자를 합쳐서 출력만 하면 된다.
이 문제는 StringTokenizer로 쉽게 풀 수 있다. Tokenizer는 토큰화 한다라는 뜻이다. 그리고 여기서 토큰은 분리된 문자열 조각이라고 생각할 수 있다. 즉, StringTokenizer는 문자열을 여러 개의 문자열 조각으로 나누는 클래스이다. 보통은 문자열이라 스페이스로 나누어져 있을 때 다음과 같이 쓰면 된다.
String str = "Hello World for String Tokenizer";
StringTokenizer st = new StringTokenizer(str);
String token1 = st.nextToken(); //"Hello"
String token2 = st.nextToken(); //"World"
String token3 = st.nextToken(); //"for"
String token4 = st.nextToken(); //"String"
String token5 = st.nextToken(); //"Tokenizer"
하지만 이번 문제에서는 문자열이 하이픈 (-)으로 나누어져 있다. 이럴 경우 StringTokenizer의 다음과 같은 생성자를 사용하면 된다.
StringTokenizer st = new StringTokenizer(문자열, 구분자)
여기서 구분자는 하이픈(-)이 되겠다. 따라서, 다음과 같이 코드를 쓰면 하이픈으로 나누어진 문자열을 쪼갤 수 있다.
StringTokenizer st = new StringTokenizer(str, "-");
- 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), "-");
StringBuilder sb = new StringBuilder();
while (st.hasMoreTokens()) {
sb.append(st.nextToken().charAt(0));
}
System.out.print(sb);
}
}
- 후기
StringTokenizer만 알면 쉽게 접근할 수 있는 문제였다.
반응형
'백준' 카테고리의 다른 글
[백준] 14606번 : 피자 (Small) – JAVA [자바] (0) | 2022.04.20 |
---|---|
[백준] 10886번 : 0 = not cute / 1 = cute – JAVA [자바] (0) | 2022.04.20 |
[백준] 1037번 : 약수 – JAVA [자바] (0) | 2022.04.18 |
[백준] 2163번 : 초콜릿 자르기 – JAVA [자바] (0) | 2022.04.18 |
[백준] 2480번 : 주사위 세개 – JAVA [자바] (0) | 2022.04.17 |
댓글