[๋ฐฑ์ค€] DSLR

๊ฐœ๋ฐœ์ž P๊ตฐยท2026๋…„ 1์›” 14์ผ

๋ฐฑ์ค€

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

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

๐Ÿ“– ๋ฌธ์ œ

๋„ค ๊ฐœ์˜ ๋ช…๋ น์–ด D, S, L, R ์„ ์ด์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ๊ธฐ๊ฐ€ ์žˆ๋‹ค. ์ด ๊ณ„์‚ฐ๊ธฐ์—๋Š” ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ํ•˜๋‚˜ ์žˆ๋Š”๋ฐ, ์ด ๋ ˆ์ง€์Šคํ„ฐ์—๋Š” 0 ์ด์ƒ 10,000 ๋ฏธ๋งŒ์˜ ์‹ญ์ง„์ˆ˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ๋ช…๋ น์–ด๋Š” ์ด ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ n์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€ํ™˜ํ•œ๋‹ค. n์˜ ๋„ค ์ž๋ฆฟ์ˆ˜๋ฅผ d1, d2, d3, d4๋ผ๊ณ  ํ•˜์ž(์ฆ‰ n = ((d1ย ร— 10 + d2) ร— 10 + d3) ร— 10 + d4๋ผ๊ณ  ํ•˜์ž)

  1. D: D ๋Š” n์„ ๋‘ ๋ฐฐ๋กœ ๋ฐ”๊พผ๋‹ค. ๊ฒฐ๊ณผ ๊ฐ’์ด 9999 ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—๋Š” 10000 ์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ทจํ•œ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๊ฐ’(2n mod 10000)์„ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•œ๋‹ค.
  2. S: S ๋Š” n์—์„œ 1 ์„ ๋บ€ ๊ฒฐ๊ณผ n-1์„ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•œ๋‹ค. n์ด 0 ์ด๋ผ๋ฉด 9999 ๊ฐ€ ๋Œ€์‹  ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ๋‹ค.
  3. L: L ์€ n์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ์™ผํŽธ์œผ๋กœ ํšŒ์ „์‹œ์ผœ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•œ๋‹ค. ์ด ์—ฐ์‚ฐ์ด ๋๋‚˜๋ฉด ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ ๋„ค ์ž๋ฆฟ์ˆ˜๋Š” ์™ผํŽธ๋ถ€ํ„ฐ d2, d3, d4, d1์ด ๋œ๋‹ค.
  4. R: R ์€ n์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜ค๋ฅธํŽธ์œผ๋กœ ํšŒ์ „์‹œ์ผœ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•œ๋‹ค. ์ด ์—ฐ์‚ฐ์ด ๋๋‚˜๋ฉด ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ ๋„ค ์ž๋ฆฟ์ˆ˜๋Š” ์™ผํŽธ๋ถ€ํ„ฐ d4, d1, d2, d3์ด ๋œ๋‹ค.

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ, L ๊ณผ R ๋ช…๋ น์–ด๋Š” ์‹ญ์ง„ ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ฐ€์ •ํ•˜๊ณ  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ n = 1234 ๋ผ๋ฉด ์—ฌ๊ธฐ์— L ์„ ์ ์šฉํ•˜๋ฉด 2341 ์ด ๋˜๊ณ  R ์„ ์ ์šฉํ•˜๋ฉด 4123 ์ด ๋œ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์„ฑํ•  ํ”„๋กœ๊ทธ๋žจ์€ ์ฃผ์–ด์ง„ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์ •์ˆ˜ A์™€ B(A โ‰  B)์— ๋Œ€ํ•˜์—ฌ A๋ฅผ B๋กœ ๋ฐ”๊พธ๋Š” ์ตœ์†Œํ•œ์˜ ๋ช…๋ น์–ด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ A = 1234, B = 3412 ๋ผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ๊ฐœ์˜ ๋ช…๋ น์–ด๋ฅผ ์ ์šฉํ•˜๋ฉด A๋ฅผ B๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

1234 โ†’Lย 2341 โ†’Lย 3412
1234 โ†’Rย 4123 โ†’Rย 3412

๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ๊ทธ๋žจ์€ ์ด ๊ฒฝ์šฐ์— LL ์ด๋‚˜ RR ์„ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

n์˜ ์ž๋ฆฟ์ˆ˜๋กœ 0 ์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ 1000 ์— L ์„ ์ ์šฉํ•˜๋ฉด 0001 ์ด ๋˜๋ฏ€๋กœ ๊ฒฐ๊ณผ๋Š” 1 ์ด ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ R ์„ ์ ์šฉํ•˜๋ฉด 0100 ์ด ๋˜๋ฏ€๋กœ ๊ฒฐ๊ณผ๋Š” 100 ์ด ๋œ๋‹ค.

โœ ์ž…๋ ฅ

ํ”„๋กœ๊ทธ๋žจ ์ž…๋ ฅ์€ T ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜ T ๋Š” ์ž…๋ ฅ์˜ ์ฒซ ์ค„์— ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ๋Š” ๋‘ ๊ฐœ์˜ ์ •์ˆ˜ A์™€ B(A โ‰  B)๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์ฐจ๋ก€๋กœ ์ฃผ์–ด์ง€๋Š”๋ฐ A๋Š” ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ดˆ๊ธฐ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๊ณ  B๋Š” ์ตœ์ข… ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. A ์™€ B๋Š” ๋ชจ๋‘ 0 ์ด์ƒ 10,000 ๋ฏธ๋งŒ์ด๋‹ค.

๐Ÿ“„ ์ถœ๋ ฅ

A์—์„œ B๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๋ช…๋ น์–ด ๋‚˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์–ด ๋‚˜์—ด์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฉด, ์•„๋ฌด๊ฑฐ๋‚˜ ์ถœ๋ ฅํ•œ๋‹ค.

โœ… ์ฝ”๋“œ

import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.util.*;  
  
public class Main {  
    static boolean[] visited;  
    static String[] operation;  
    public static void main(String[] args) throws IOException {  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
        int T = Integer.parseInt(br.readLine());  
  
        while(0 < T--) {  
            StringTokenizer st = new StringTokenizer(br.readLine());  
            int start = Integer.parseInt(st.nextToken());  
            int target = Integer.parseInt(st.nextToken());  
  
            System.out.println(bfs(start, target));  
        }  
    }  
  
    public static String bfs(int start, int target) {  
        visited = new boolean[10000];  
        operation = new String[10000];  
  
        Queue<Integer> queue = new LinkedList<>();  
        operation[start] = "";  
        queue.offer(start);  
        visited[start] = true;  
  
        while(!queue.isEmpty()) {  
            int now = queue.poll();  
  
            if(now == target) return operation[now];  
  
            // D  
            int d = (now * 2) > 9999 ? (now * 2) % 10000 : (now * 2);  
            if(!visited[d]) {  
                setting(queue, now, d, "D");  
            }  
  
            // S  
            int s = now == 0 ? 9999 : now - 1;  
            if(!visited[s]) {  
                setting(queue, now, s, "S");  
            }  
  
            // L  
            int l = (now % 1000) * 10 + (now / 1000);  
            if(!visited[l]) {  
                setting(queue, now, l, "L");  
            }  
  
            // R  
            int r = (now % 10) * 1000 + (now / 10);  
            if(!visited[r]) {  
                setting(queue, now, r, "R");  
            }  
        }  
  
        return "";  
    }  
  
    public static void setting(Queue<Integer> queue, int now, int next, String add) {  
        visited[next] = true;  
        operation[next] = operation[now] + add;  
        queue.offer(next);  
    }  
}
profile
๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด ์–ป์€ ์ƒˆ๋กœ์šด ์ง€์‹์„ ๊ณต์œ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

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