Algorithm๐Ÿฅ‡

17413.๋‹จ์–ด๋’ค์ง‘๊ธฐ2

hae02y 2023. 10. 16. 08:24
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

๋ฌธ์ž์—ด S๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด ๋ฌธ์ž์—ด์—์„œ ๋‹จ์–ด๋งŒ ๋’ค์ง‘์œผ๋ ค๊ณ  ํ•œ๋‹ค.

๋จผ์ €, ๋ฌธ์ž์—ด S๋Š” ์•„๋ž˜์™€๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ์ง€ํ‚จ๋‹ค.

  1. ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž('a'-'z'), ์ˆซ์ž('0'-'9'), ๊ณต๋ฐฑ(' '), ํŠน์ˆ˜ ๋ฌธ์ž('<', '>')๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
  2. ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘๊ณผ ๋์€ ๊ณต๋ฐฑ์ด ์•„๋‹ˆ๋‹ค.
  3. '<'์™€ '>'๊ฐ€ ๋ฌธ์ž์—ด์— ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ๋“ฑ์žฅํ•˜๋ฉฐ, '<'์ด ๋จผ์ € ๋“ฑ์žฅํ•œ๋‹ค. ๋˜, ๋‘ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๋Š” ๊ฐ™๋‹ค.

ํƒœ๊ทธ๋Š” '<'๋กœ ์‹œ์ž‘ํ•ด์„œ '>'๋กœ ๋๋‚˜๋Š” ๊ธธ์ด๊ฐ€ 3 ์ด์ƒ์ธ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์ด๊ณ , '<'์™€ '>' ์‚ฌ์ด์—๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž์™€ ๊ณต๋ฐฑ๋งŒ ์žˆ๋‹ค. ๋‹จ์–ด๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž์™€ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์ด๊ณ , ์—ฐ์†ํ•˜๋Š” ๋‘ ๋‹จ์–ด๋Š” ๊ณต๋ฐฑ ํ•˜๋‚˜๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค. ํƒœ๊ทธ๋Š” ๋‹จ์–ด๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ํƒœ๊ทธ์™€ ๋‹จ์–ด ์‚ฌ์ด์—๋Š” ๊ณต๋ฐฑ์ด ์—†๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋ฌธ์ž์—ด S๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. S์˜ ๊ธธ์ด๋Š” 100,000 ์ดํ•˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋ฌธ์ž์—ด S์˜ ๋‹จ์–ด๋ฅผ ๋’ค์ง‘์–ด์„œ ์ถœ๋ ฅํ•œ๋‹ค.

์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ œ์ถœ ์ •๋‹ต ๋งžํžŒ ์‚ฌ๋žŒ ์ •๋‹ต ๋น„์œจ
1 ์ดˆ 512 MB 27238 15339 11856 56.809%
https://www.acmicpc.net/problem/17413

ํ’€์ด

์ฝ”๋“œ

/*  
1. < > ํƒœ๊ทธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.  
2. ' ' ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.  
 */  
public class ๋‹จ์–ด๋’ค์ง‘๊ธฐ2 {  

    public static void main(String[] args) throws IOException {  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
        String S = br.readLine();  

        StringBuilder sb = new StringBuilder();  

        boolean tag = false; //๊บฝ์‡ ๊ฐ€ ์–ผ๋ ธ๋Š”์ง€ ๋‹ซํ˜”๋Š”์ง€ ํŒ๋ณ„  

        Stack<Character> stack = new Stack<>(); //ํ›„์ž…์„ ์ถœ  

        for (int i = 0; i < S.length(); i++) {  
            //๊บฝ์‡ ๋ฅผ ๋งŒ๋‚˜๋ฉด stack์ด ๋น„์–ด์žˆ์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ์›์†Œ๋ฅผ ๊บผ๋‚ด๊ณ  tag๋ฅผ true๋กœ  
            if (S.charAt(i) == '<') {  
                while (!stack.isEmpty()) {  
                    sb.append(stack.pop());  
                }  
                tag = true;  
            } else if (S.charAt(i) == '>') {  
                tag = false;  
                sb.append(S.charAt(i));  
                continue;  
            }  

            //tag๊ฐ€ true์ธ ๊ฒฝ์šฐ  
            if (tag) {  
                sb.append(S.charAt(i));  

                //tag๊ฐ€ false์ธ ๊ฒฝ์šฐ  
            } else if (!tag) {  
                if (S.charAt(i) == ' ') { //๊ณต๋ฐฑ์„ ๋งŒ๋‚˜๋ฉด ๋ชจ๋“  ์›์†Œ๋ฅผ popํ•œ ํ›„์— ๊ณต๋ฐฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.  
                    while (!stack.isEmpty()) {  
                        sb.append(stack.pop());  
                    }  
                    sb.append(' ');  
                    continue;  
                } else {  
                    stack.push(S.charAt(i));  
                }  
            }  
            //๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ๋‹ซํž˜ ๊บพ์‡ ๊ฐ€ ์•„๋‹๋•Œ, ์Šคํƒ์— ๋‚จ์•„์žˆ๋Š”๋ถ€๋ถ„์„ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด์„œ..!
            if (i == S.length() - 1) {  
                while (!stack.isEmpty()) {  
                    sb.append(stack.pop());  
                }  
            }  
        }  
        System.out.println(sb);  
    }  
}

๋‹ต์ง€ ๋ฐฐ๋‚Œ..!ใ…‹ใ…‹ใ…‹ใ…‹
https://velog.io/@newtownboy/JAVA17413%EB%B2%88-%EB%8B%A8%EC%96%B4-%EB%92%A4%EC%A7%91%EA%B8%B0-2

๋ฐ˜์‘ํ˜•