๊ธฐ๋ก๋ฐฉ

BOJ_5430 : AC ๋ณธ๋ฌธ

CodingTest/Java

BOJ_5430 : AC

Soom_1n 2023. 3. 28. 10:14

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

5430๋ฒˆ: AC

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

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • T๋ฒˆ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ ๋‹ค์Œ ๊ณ„์‚ฐ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
    • ์—ฐ์‚ฐ p๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
    • n ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
    • ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
      • R : ๋’ค์ง‘๊ธฐ
      • D : ์ฒซ ๋ฒˆ์งธ ์ˆ˜ ๋ฒ„๋ฆฌ๊ธฐ
  • n๊ณผ p์˜ ๊ธธ์ด์˜ ์ตœ๋Œ€๊ฐ’์ด 10๋งŒ์ด๋ฏ€๋กœ R์—ฐ์‚ฐ๋งˆ๋‹ค ๋ฐฐ์—ด์„ ์ง์ ‘ ๋’ค์ง‘์œผ๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚œ๋‹ค.
    • ๋ฐฐ์—ด์˜ ์‹œ์ž‘๊ณผ ๋ ์ธ๋ฑ์Šค์— ๊ฐ๊ฐ ํฌ์ธํ„ฐ๋ฅผ ๋‘๊ณ , ๋’ค์ง‘ํžŒ ์ƒํƒœ๋ฅผ ๋ณด๋ฉฐ D์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        // Input
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int tc = Integer.parseInt(br.readLine());

        for (int t = 0; t < tc; t++) {
            String p = br.readLine();
            int n = Integer.parseInt(br.readLine());
            String origin = br.readLine();
            String[] ss = origin.substring(1, origin.length() - 1).split(",");

            int[] arr = new int[n];
            for (int i = 0; i < n; i++) {
                arr[i] = Integer.parseInt(ss[i]);
            }

            // ์ค‘๋ณต R ์ œ๊ฑฐ
            while (p.contains("RR")) {
                p = p.replace("RR", "");
            }

            // ์—ฐ์‚ฐ ์ˆ˜ํ–‰
            process(n, p, arr);
        }
    }

    private static void process(int n, String p, int[] arr) {
        int left = 0, right = n - 1;
        boolean flag = true;

        for (int i = 0; i < p.length(); i++) {
            // ๋’ค์ง‘๊ธฐ
            if (p.charAt(i) == 'R') {
                flag = !flag;
            }
            // ๋งจ ์•ž ์ง€์šฐ๊ธฐ
            else {
                if (n == 0) {
                    System.out.println("error");
                    return;
                }
                n--;
                if (flag) left++;
                else right--;
            }
        }

        if (n==0) {
            System.out.println("[]");
            return;
        }

        StringBuilder sb = new StringBuilder();
        sb.append('[');

        if (flag) {
            for (int i = left; i <= right; i++) {
                sb.append(arr[i]).append(',');
            }
        } else {
            for (int i = right; i >= left; i--) {
                sb.append(arr[i]).append(',');
            }
        }

        sb.deleteCharAt(sb.length() - 1);
        sb.append(']');
        System.out.println(sb);
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ์—ฐ์† R์—ฐ์‚ฐ 2๋ฒˆ์€ ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์ด๋ฏ€๋กœ p์—์„œ ๋ชจ๋“  "RR"์„ ์ œ๊ฑฐํ•œ๋‹ค.
  • boolean ๋ณ€์ˆ˜ flag๋ฅผ ํ†ตํ•ด ์ •์ƒ ์ƒํƒœ์ธ์ง€ ๋’ค์ง‘ํžŒ ์ƒํƒœ์ธ์ง€ ๊ตฌ๋ถ„ํ•œ๋‹ค.
    • D์—ฐ์‚ฐ์—์„œ ๋’ค์ง‘ํžŒ ์ƒํƒœ๋Š” right, ์ •์ƒ์€ left๋ฅผ ํ•œ ์นธ ์ด๋™์‹œํ‚จ๋‹ค.
  • ์›์†Œ์˜ ๊ฐœ์ˆ˜ ๊ตฌ๋ถ„์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ int๋ณ€์ˆ˜ n์„ ์‚ฌ์šฉํ•œ๋‹ค.
    • n์ด 0์ธ๋ฐ D์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋˜๋ฉด "error"๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • ๋ชจ๋“  ์—ฐ์‚ฐ์ด ๋๋‚œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
    • n์ด 0์ด๋ฉด ๋นˆ ๋ฐฐ์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.
    • n์ด 0์ด์ƒ์ด๋ฉด ๋’ค์ง‘ํžŒ ๋ฐฉํ–ฅ์— ๋งž์ถฐ์„œ ๋ฐฐ์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • left์™€ right๋กœ ๋‚จ์€ ์›์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ฒดํฌํ•˜๋ ค๋‹ค๊ฐ€ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ ธ์„œ ๋งŽ์ด ํ‹€๋ฆฐ ๊ฒƒ ๊ฐ™๋‹ค.
    • ๊น”๋”ํ•˜๊ฒŒ n์„ ๋‘๊ณ  ํ’€์–ด์„œ ํ•ด๊ฒฐํ–ˆ๋‹ค.
  • ๋ฌธ์ œ ๋ถ„์„๊ณผ ํ’€์ด ๊ณ„ํš์„ ์ ์–ด๊ฐ€๋ฉฐ ํ’€์—ˆ๋‹ค.
    • ์ฒ˜์Œ์—” string์œผ๋กœ p๋ฅผ ๋‘๋ ค๊ณ ํ–ˆ๋Š”๋ฐ, ์—๋Ÿฌ๊ฐ€ ๋งŽ์ด๋‚˜์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ฌธ์ œ๋ฅผ ์ ‘๊ทผํ•ด int๋ฐฐ์—ด๋กœ ์ €์žฅํ–ˆ๋‹ค.

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_1463 : 1๋กœ ๋งŒ๋“ค๊ธฐ  (0) 2023.03.30
BOJ_7662 : ์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ  (0) 2023.03.29
BOJ_9019 : DSLR  (0) 2023.03.21
BOJ_14502 : ์—ฐ๊ตฌ์†Œ  (0) 2023.03.08
BOJ_1916 : ์ตœ์†Œ๋น„์šฉ ๊ตฌํ•˜๊ธฐ  (0) 2023.03.08