728x90
https://www.acmicpc.net/problem/9019
9019번: DSLR
네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에
www.acmicpc.net
문제 풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
static class Num {
int num; String cmd;
public Num(int num, String cmd) {
this.num = num;
this.cmd = cmd;
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringTokenizer st; int A, B;
StringBuilder sb = new StringBuilder();
Queue<Num> queue; Num number;
int num, num_next, DSLR[] = new int[4], i;
char c[] = {'D', 'S', 'L', 'R'}; String cmd;
boolean visited[];
loop:
while (T-- > 0) {
st = new StringTokenizer(br.readLine());
A = Integer.parseInt(st.nextToken());
B = Integer.parseInt(st.nextToken());
visited = new boolean[10000];
queue = new LinkedList<>();
queue.add(new Num(A, ""));
while(!queue.isEmpty()) {
number = queue.remove();
num = number.num; cmd = number.cmd;
if (num == B) {
sb.append(cmd + "\n");
continue loop;
}
DSLR[0] = num * 2 % 10000; // D
DSLR[1] = num == 0 ? 9999 : num - 1; // S
DSLR[2] = num % 1000 * 10 + num / 1000; // L
DSLR[3] = num % 10 * 1000 + num / 10; // R
for (i = 0; i < 4; ++i) {
num_next = DSLR[i];
if (!visited[num_next]) {
queue.add(new Num(num_next, cmd + c[i]));
visited[num_next] = true;
}
}
}
}
br.close();
System.out.print(sb.toString());
}
}
아 네 자리구나
반응형
'코딩 문제 풀기 ( Algorithm problem solving ) > 백준 온라인 저지 ( BOJ )' 카테고리의 다른 글
[백준(Baekjoon)][자바(java)] 11780 : 플로이드 2 / 동적 계획법과 최단거리 역추적 (0) | 2022.01.17 |
---|---|
[백준(Baekjoon)][자바(java)] 11779 : 최소비용 구하기 2 / 동적 계획법과 최단거리 역추적 (0) | 2022.01.17 |
[백준(Baekjoon)][자바(java)] 13913 : 숨바꼭질 4 / 동적 계획법과 최단거리 역추적 (0) | 2022.01.17 |
[백준(Baekjoon)][자바(java)] 9252 : LCS 2 / 동적 계획법과 최단거리 역추적 (0) | 2022.01.17 |
[백준(Baekjoon)][자바(java)] 14002 : 가장 긴 증가하는 부분 수열 4 / 동적 계획법과 최단거리 역추적 (0) | 2022.01.17 |