[๋ฐฑ์ค€] AC

๊ฐœ๋ฐœ์ž P๊ตฐยท2025๋…„ 6์›” 16์ผ

๋ฐฑ์ค€

๋ชฉ๋ก ๋ณด๊ธฐ
15/57
post-thumbnail

๐Ÿ”— ๋ฌธ์ œ ๋ณด๊ธฐ - [๋ฐฑ์ค€] AC)

๐Ÿ“– ๋ฌธ์ œ

์„ ์˜์ด๋Š” ์ฃผ๋ง์— ํ•  ์ผ์ด ์—†์–ด์„œ ์ƒˆ๋กœ์šด ์–ธ์–ด AC๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. AC๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด์— ์—ฐ์‚ฐ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ์–ธ์–ด์ด๋‹ค. ์ด ์–ธ์–ด์—๋Š” ๋‘ ๊ฐ€์ง€ ํ•จ์ˆ˜ R(๋’ค์ง‘๊ธฐ)๊ณผ D(๋ฒ„๋ฆฌ๊ธฐ)๊ฐ€ ์žˆ๋‹ค.

ํ•จ์ˆ˜ R์€ ๋ฐฐ์—ด์— ์žˆ๋Š” ์ˆ˜์˜ ์ˆœ์„œ๋ฅผ ๋’ค์ง‘๋Š” ํ•จ์ˆ˜์ด๊ณ , D๋Š” ์ฒซ ๋ฒˆ์งธ ์ˆ˜๋ฅผ ๋ฒ„๋ฆฌ๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ๋Š”๋ฐ D๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์—๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

ํ•จ์ˆ˜๋Š” ์กฐํ•ฉํ•ด์„œ ํ•œ ๋ฒˆ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "AB"๋Š” A๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ์— ๋ฐ”๋กœ ์ด์–ด์„œ B๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "RDD"๋Š” ๋ฐฐ์—ด์„ ๋’ค์ง‘์€ ๋‹ค์Œ ์ฒ˜์Œ ๋‘ ์ˆ˜๋ฅผ ๋ฒ„๋ฆฌ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

๋ฐฐ์—ด์˜ ์ดˆ๊ธฐ๊ฐ’๊ณผ ์ˆ˜ํ–‰ํ•  ํ•จ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

โœ ์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. T๋Š” ์ตœ๋Œ€ 100์ด๋‹ค.

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์—๋Š” ์ˆ˜ํ–‰ํ•  ํ•จ์ˆ˜ p๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. p์˜ ๊ธธ์ด๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

๋‹ค์Œ ์ค„์—๋Š” ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ์ˆ˜์˜ ๊ฐœ์ˆ˜ n์ด ์ฃผ์–ด์ง„๋‹ค. (0 โ‰ค n โ‰ค 100,000)

๋‹ค์Œ ์ค„์—๋Š” [x1,...,xn]๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค xiย โ‰ค 100)

์ „์ฒด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ์ฃผ์–ด์ง€๋Š” p์˜ ๊ธธ์ด์˜ ํ•ฉ๊ณผ n์˜ ํ•ฉ์€ 70๋งŒ์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

๐Ÿ“„ ์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ •์ˆ˜ ๋ฐฐ์—ด์— ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์—๋Š” error๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

โœ… ์ฝ”๋“œ

import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.util.ArrayDeque;  
import java.util.Deque;  
  
public class Main {
    public static void main(String[] args) throws IOException {  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
        int t = Integer.parseInt(br.readLine());  
  
        while (t-- > 0) {  
            String p = br.readLine();                   // ์ˆ˜ํ–‰ํ•  ํ•จ์ˆ˜  
            int n = Integer.parseInt(br.readLine());    // ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ์ˆ˜์˜ ๊ฐœ์ˆ˜  
            String line = br.readLine();  
            Deque<Integer> deque = new ArrayDeque<>();  
            if(n != 0) {  
                String[] strArr = line.substring(1, line.length() - 1).split(",");  
                for (String val : strArr) {  
                    deque.offer(Integer.parseInt(val));  
                }  
            }  
  
            boolean isReverse = false;                  // ๋ฐฐ์—ด์„ ๋’ค์ง‘์„์ง€ ์—ฌ๋ถ€
            boolean isError = false;                    // "error"๋ฅผ ์ถœ๋ ฅํ• ์ง€ ์—ฌ๋ถ€
            for (int i = 0; i < p.length(); i++) {  
                if (p.charAt(i) == 'R') {  
                    isReverse = !isReverse;  
                } else {
                    // char ๊ฐ’์ด 'D'์ธ๋ฐ dequeue ๊ฐ’์ด ๋น„์–ด์žˆ์œผ๋ฉด error ์ถœ๋ ฅ
                    if (deque.isEmpty()) {  
                        isError = true;  
                        break;  
                    }  
                    if (isReverse) {  
                        deque.pollLast();  
                    } else {  
                        deque.poll();  
                    }  
                }  
            }  
  
            if (isError) {  
                System.out.println("error");  
            } else {  
                StringBuilder sb = new StringBuilder();  
                sb.append("[");  
                while (!deque.isEmpty()) {  
                    if (isReverse) {  
                        sb.append(deque.pollLast()).append(",");  
                    } else {  
                        sb.append(deque.poll()).append(",");  
                    }  
                }  
                if(sb.length() > 1) {  
                    sb.setLength(sb.length() - 1);  
                }  
                sb.append("]");  
                System.out.println(sb.toString());  
            }  
        }  
    }  
}

๐Ÿงฉ ์ฝ”๋“œํ’€์ด

ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๋’ค์ง‘์–ด์„œ ์ถœ๋ ฅํ• ์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋ฐฐ์—ด์˜ ์•ž ํ˜น์€ ๋’ค์—์„œ ๊ฐ’์„ ์‚ญ์ œํ•ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–‘์ชฝ์œผ๋กœ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•œ Dequeue๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ฐ๊ฐ ์ผ€์ด์Šค๋ณ„ ์ˆ˜ํ–‰ํ•  ํ•จ์ˆ˜, ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ์ˆ˜, ๋ฐฐ์—ด ๊ฐ’์„ ํ™•์ธํ•˜์—ฌ Dequeue์— ๊ฐ’์„ ๋‹ด์Šต๋‹ˆ๋‹ค.
  2. ์ดํ›„ ์ •๋ ฌ์„ ๋’ค์ง‘์„ ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ boolean ๊ฐ’ isReverse, error๋ฅผ ์ถœ๋ ฅ ์—ฌ๋ถ€ isError๋ฅผ ์„ ์–ธํ•˜์—ฌ ํ•จ์ˆ˜ String์„ ์ˆœํ™˜ํ•˜๋ฉฐ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค.
  3. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ฒดํฌํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ error ํ˜น์€ ๋ฐฐ์—ด ๊ฒฐ๊ณผ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ค๋‹ˆ๋‹ค
profile
๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด ์–ป์€ ์ƒˆ๋กœ์šด ์ง€์‹์„ ๊ณต์œ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€