[JAVA-자바] 9019번: DSLR

2025. 4. 8. 15:20·알고리즘/백준

 

소스코드:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class Main {
    static BufferedReader br;
    static BufferedWriter bw;

    static class myClass {
        public int number;
        public String output;

        public myClass(int number, String output) {
            this.number = number;
            this.output = output;
        }
    }

    public static void main(String[] args) throws IOException {
        br = new BufferedReader(new InputStreamReader(System.in));
        bw = new BufferedWriter(new OutputStreamWriter(System.out));

        char[] command = new char[]{'D', 'S', 'L', 'R'};

        int T = Integer.parseInt(br.readLine());
        for (int i = 0; i < T; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int number = Integer.parseInt(st.nextToken());
            int target = Integer.parseInt(st.nextToken());

            boolean[] visited = new boolean[10000];

            Queue<myClass> queue = new LinkedList<>();
            queue.add(new myClass(number, ""));
            visited[number] = true;

            while (!queue.isEmpty()) {
                myClass cur = queue.poll();
                int cur_number = cur.number;
                String cur_output = cur.output;

                if (cur_number == target) {
                    bw.write(cur_output + "\n");
                    break;
                }

                int[] nextNumber = new int[]{D(cur_number), S(cur_number), L(cur_number), R(cur_number)};
                for (int q = 0; q < 4; q++) {
                    if (!visited[nextNumber[q]]) {
                        visited[nextNumber[q]] = true;
                        queue.add(new myClass(nextNumber[q], cur_output + command[q]));
                    }
                }
            }
        }
        br.close();
        bw.close();
    }

    public static int D(int n) {
        return (n * 2) % 10000;
    }

    public static int S(int n) {
        if (n == 0) {
            return 9999;
        }
        return n - 1;
    }

    public static int L(int n) {
        return ((n % 1000) * 10) + (n / 1000);
    }

    public static int R(int n) {
        return (n / 10) + ((n % 10) * 1000);
    }

}

 

글의 내용 중 잘못된 점이나 수정이 필요한 부분, 혹은 궁금한 사항이 있다면 언제든 댓글로 남겨주시면 감사하겠습니다.

여러분의 피드백은 더 나은 글을 작성하는 데 큰 도움이 됩니다. 감사합니다.

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

[JAVA-자바] 11053번: 가장 긴 증가하는 부분 수열  (0) 2025.04.09
[JAVA-자바] 14500번: 테트로미노  (0) 2025.04.08
[JAVA-자바] 16928번: 뱀과 사다리 게임  (0) 2025.04.08
[JAVA-자바] 7662번: 이중 우선순위 큐  (0) 2025.04.07
[JAVA-자바] 10026번: 적록색약  (0) 2025.04.04
'알고리즘/백준' 카테고리의 다른 글
  • [JAVA-자바] 11053번: 가장 긴 증가하는 부분 수열
  • [JAVA-자바] 14500번: 테트로미노
  • [JAVA-자바] 16928번: 뱀과 사다리 게임
  • [JAVA-자바] 7662번: 이중 우선순위 큐
raven
raven
Github : https://github.com/RabeMaster | Email : ra___be@naver.com
  • raven
    배움을 원하는 사람
    raven
  • 전체
    오늘
    어제
  • 공지사항

    • 안녕하세요
    • 분류 전체보기 (169)
      • 네이버 부스트캠프 10기 (7)
        • 멤버십 (5)
        • 챌린지 (1)
        • 베이직 (1)
      • 공부 (2)
        • JAVA (1)
        • CS (0)
        • 정보처리기사 (1)
      • 알고리즘 (159)
        • 백준 (159)
      • 개발 (1)
        • 백준 확장 프로그램 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

    백트래킹
    네부캠
    그리디 알고리즘
    다이나믹 프로그래밍
    IT
    최단 경로
    수학
    브루트포스 알고리즘
    백준
    java
    자바
    구현
    그래프 탐색
    스택
    코딩테스트
    문자열
    네이버
    자료 구조
    정렬
    멤버십
    회고
    알고리즘
    네이버부스트캠프
    코딩
    부스트캠프
    너비 우선 탐색
    부트캠프
    코테
    그래프 이론
    개발
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
raven
[JAVA-자바] 9019번: DSLR
상단으로

티스토리툴바