[백준 JAVA] 17413번 풀이 - 단어 뒤집기2 (크게 보고 큰 틀을 잡자)
by mini_minpackage quiz;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class _17413 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
Stack<Character> stack = new Stack<>();
StringBuilder sb = new StringBuilder();
for(int i=0; i<s.length(); i++){
if(s.charAt(i)=='<'){
sb.append(s.charAt(i));
for(int j=i+1; j<s.length(); j++){
if(s.charAt(j)=='>'){
i = j;
sb.append(">");
break;
} else {
sb.append(s.charAt(j));
}
}
} else {
if(s.charAt(i)!=' '){
stack.push(s.charAt(i));
} else if(s.charAt(i)==' '){
while(!stack.isEmpty()){
sb.append(stack.pop());
}
sb.append(s.charAt(i));
}
//마지막.
if(s.length()==i+1 || s.charAt(i+1)=='<'){
while(!stack.isEmpty()){
sb.append(stack.pop());
}
}
}
}
System.out.println(sb);
}
}
풀이
실버 3 난이도 문제이고 전에 단어 뒤집기 문제를 풀어서
금방 풀 줄 알았는데 생각보다 오래 걸린 문제였다.
가장 힘들었던 부분.
'<' 부터 '>' 까지 의 문자열을 어떻게 처리할지
몇 번의 시행착오 끝에
문자가 '<' 인 경우 다음 문자(i+1)부터 '>' 문자가 나올 때 까지 for 문으로 StringBuilder 에 찍는 방법을 찾아냈다.
그렇게 if 조건 경우의 수는 2가지 ( 1.< 인 경우 2.그렇지 않은 경우 )
😶 답을 찾기 전에는 if 조건이 엄청 많았다.... 큰 틀을 잘 잡자....
'매일매일 알고리즘 공부' 카테고리의 다른 글
[백준 JAVA] 17298번 풀이 - 오큰수 (인덱스 🥺..) (0) | 2023.11.06 |
---|---|
[백준 JAVA] 10799번 풀이 - 쇠막대기 (자료구조 점점 능숙해😇) (1) | 2023.10.28 |
[백준 JAVA] 1406번 풀이 - 에디터 (LinkedList 와 Stack 💖중요!!) (0) | 2023.10.26 |
[백준 JAVA] 9093번 풀이 - 단어 뒤집기 (0) | 2023.10.25 |
[백준 JAVA] 11866번 풀이 - 요세푸스 문제 0 ✨ (0) | 2023.10.24 |
블로그의 정보
개발자 미니민의 개발로그
mini_min