알고리즘 스터디 9주차[구현]_01
백준17413번 문제
문제 : 단어 뒤집기 2
문제 설명 : 문자열을 입력받고 단어를 뒤집어 출력하는 프로그램. 이때 중요한 포인트는 < >안에 있는 내용은 그대로 출력하는 프로그램.
코드 :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main_17413 {
public static void main(String[] argv) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
Stack<Character> st = new Stack<>();
boolean tf =false;
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='<'){
tf=true;
while(!st.isEmpty()){
System.out.print(st.pop());
}
System.out.print(str.charAt(i));
}
else if(str.charAt(i)=='>'){
tf = false;
System.out.print(str.charAt(i));
}
else if(tf ==true){
System.out.print(str.charAt(i));
}
else{
if(str.charAt(i)==' '){
while(!st.isEmpty()){
System.out.print(st.pop());
}
System.out.print(str.charAt(i));
}
else{
st.push(str.charAt(i));
}
}
}
while(!st.isEmpty()){
System.out.print(st.pop());
}
}
}
문제 풀이 :
본 문제는 스택을 활용하고 boolean형 변수를 설정해 풀어야 한다. 우선 문자열을 입력받아 저장한 후, for문을 통해 charat()를 하나씩 반복해나간다. 그 후 if~ else if 문을 활용한다. 처음 if문에서 '<'가 입력된다면 tf를 true로 바꾼 후 그 전까지 스택에 저장된 값을 출력하는데 스택이기 때문에 선입후출 구조이기에 역으로 출력된다. 그 후 '>'가 나오면 tf를 false로 바꾼 후 '>'를 출력한다. 이때 이 전까지는 true였으므로 true인 상태라면 그냥 for문을 돌리면서 바로바로 출력한다. 그 후 false라면 공백이 나오기 전까지 스택에 쌓았다가 다시 뒤집어 출력하고 get down 이라고 한다면, 마지막 down은 마지막 while문을 통해 스택을 출력하는 과정을 거친다.
Author And Source
이 문제에 관하여(알고리즘 스터디 9주차[구현]_01), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@jaehyukjung/알고리즘-스터디-9주차구현01
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main_17413 {
public static void main(String[] argv) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
Stack<Character> st = new Stack<>();
boolean tf =false;
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='<'){
tf=true;
while(!st.isEmpty()){
System.out.print(st.pop());
}
System.out.print(str.charAt(i));
}
else if(str.charAt(i)=='>'){
tf = false;
System.out.print(str.charAt(i));
}
else if(tf ==true){
System.out.print(str.charAt(i));
}
else{
if(str.charAt(i)==' '){
while(!st.isEmpty()){
System.out.print(st.pop());
}
System.out.print(str.charAt(i));
}
else{
st.push(str.charAt(i));
}
}
}
while(!st.isEmpty()){
System.out.print(st.pop());
}
}
}
Author And Source
이 문제에 관하여(알고리즘 스터디 9주차[구현]_01), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jaehyukjung/알고리즘-스터디-9주차구현01저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)