[알고리즘]/백준

백준 17413 자바 - 단어 뒤집기2

broship 2021. 6. 18. 21:15

문제


 

 

 

문제해결


import java.util.Scanner;
import java.util.Stack;

public class B17413 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String s = sc.nextLine(); // 문자열 s 입력받기
        Stack<Character> stack = new Stack<>(); // 단어 담을 스텍
        boolean flag = false; // 태그 안에 있는 문자면 true

        for (int i = 0; i < s.length(); i++) {
            Character c = s.charAt(i);
            if (c=='<'){ //여는 괄호일 경우 이전 문자를 거꾸로 출력 한다
                flag = true; //flag는 true로(단어를 순서 그대로 출력한다)
                while (!stack.isEmpty()){//출력
                    System.out.print(stack.pop());
                }
                System.out.print(c);
            } else if (c=='>'){//닫는 괄호일 경우
                flag = false;//flag는 false로
                System.out.print(c);
            } else {
                if (flag)//태그 안에 있을 경우 순서대로 출력
                    System.out.print(c);
                else{//태그 밖에 있을 경우
                    if (c!=' ')//공백이면 이전 문자 거꾸로 출력
                        stack.push(c);
                    else{//스텍에 담아 거꾸로 만든다
                        while (!stack.isEmpty()){//출력
                            System.out.print(stack.pop());
                        }
                        System.out.print(c);
                    }
                }
            }
        }
        //마지막에 스텍의 모든 단어를 출력한다
        while (!stack.isEmpty()){
            System.out.print(stack.pop());
        }
    }
}

- 입력받은 문자열을 한글자씩 체크한다

1. '<' : stack에 담긴 문자 출력(거꾸로 출력된다), flag=true(태그 안에 있음을 표시), '<' 출력

2. '>' : '>' 출력, flag=false(태그가 끝났음)

3. 태그 안에 있을 경우(flag==true) 그냥 출력

4. 태그 밖에 있을 경우(flag==false) 스텍에 담은 후 공백을 만나거나 '<'를 만나면 출력한다

'[알고리즘] > 백준' 카테고리의 다른 글

백준 17298 자바 - 오큰수  (0) 2021.06.20
백준 10799 자바 - 쇠막대기  (0) 2021.06.19
백준 10866 자바 - 덱  (0) 2021.06.18
백준 1158 자바 - 요세푸스 문제  (0) 2021.06.17
백준 10845 자바 - 큐  (0) 2021.06.16