https://www.acmicpc.net/problem/3568
풀이
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());
String common = st.nextToken();
StringBuilder sb;
while(st.hasMoreTokens()){
sb = new StringBuilder();
sb.append(common);
String s = st.nextToken();
for(int j = s.length() - 2; j >= 0; j--){
if(s.charAt(j) >= 'a' && s.charAt(j) <= 'z' || s.charAt(j) >= 'A' && s.charAt(j) <= 'Z'){
sb.append(" ");
sb.append(s.substring(0,j+1));
break;
}else if(s.charAt(j) == ']'){
sb.append("[]");
j--;
}else{
sb.append(s.charAt(j));
}
}
sb.append(";");
System.out.println(sb);
}
}
}
문제 자체는 그렇게 어렵지 않으나 다양한 도구들이 쓰인 것만 정리해보자.
StringTokenizer st이다. 일반적으로 문장을 받을 때 자주 쓰는데 지금처럼 문장의 길이 혹은 배열의 길이가 정해져있지 않을 때 꽤 유용한 도구로 .hasMoreTokens()를 사용할 수 있다. 같은 의미로 countTokens()를 쓸 수도 있다.
이 후에는 stringBuilder를 이용해 문장을 만들었다.
1. 기본값을 더해준다.
2. 만약 알파벳이라면 0부터 j+1까지를 잘라서 더해준다.
3.]를 만난다면 j를 하나 더 줄여주고 []를 한번에 더해준다.
4. 그냥 변수형이라면 더해준다. -> 이것 때문에 3에서 처리해주는 것이다. 안 그러면 ][이렇게 들어가게 된다.
마지막으로 ; 를 더해준 뒤에 출력한다.
'문제 풀이 > 백준' 카테고리의 다른 글
[백준] 9095번. 1, 2, 3 더하기(JAVA) (0) | 2024.05.07 |
---|---|
[백준] 1890번. 점프(JAVA) (0) | 2024.05.07 |
[백준] 17070번. 파이프 옮기기1 (JAVA) (0) | 2024.04.19 |
[백준]2294번. 동전2(JAVA) (0) | 2024.04.18 |
[백준]2293번. 동전1(JAVA) (2) | 2024.04.18 |