[C++] BOJ 9019 - DSLRProblem Solving/Baekjoon Online Judge (BOJ)2025. 4. 19. 13:45
Table of Contents

01. ๐ ๋ฌธ์ ํ์
D: n์ 2๋ฐฐ๋ก ํ์ฌ 10000์ผ๋ก ๋ชจ๋๋ฌ ์ฐ์ฐํ ๊ฐ์ ๋ ์ง์คํฐ์ ์ ์ฅ
S: n-1์ ๋ ์ง์คํฐ์ ์ ์ฅ. ๋จ, n์ด 0์ผ ๊ฒฝ์ฐ 9999๋ฅผ ๋ ์ง์คํฐ์ ์ ์ฅ
L: ๊ฐ ์๋ฆฌ์๋ฅผ ์ผ์ชฝ์ผ๋ก ํ์ (d1d2d3d4 -> d2d3d4d1)
R: ๊ฐ ์ง๋ฆฌ์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ (d1d2d3d4 -> d4d1d2d3)
INPUT
T: ํ
์คํธ์ผ์ด์ค ๊ฐ์
A: ์์ ์ซ์, B: ๋ชฉํ ์ซ์
OUTPUT
A๋ฅผ B๋ก ๋ฐ๊พธ๊ธฐ ์ํ ์ต์ํ์ ๋ช
๋ น์ ์ถ๋ ฅ
01-1. ๊ฐ๋ฅํ ์๊ฐ ๋ณต์ก๋
- ์ต๋ 10000๋ฒ์ ์ฐ์ฐ, ์๊ฐ ๋ณต์ก๋ O(N)์ผ๋ก ๊ตฌํ
01-2. ์๊ณ ๋ฆฌ์ฆ ์ ํ
- ์์ ์ํ A์์ D, S, L, R 4๊ฐ์ ๋ช ๋ น์ผ๋ก B๋ฅผ ๋ง๋๋ ๊ฒ์ผ๋ก BFS๋ฅผ ํตํด ์ต๋จ ๋ช ๋ น์ด๋ฅผ ๊ตฌํ ์ ์์
02. ๐ ์ฝ๋ ์ค๊ณํ๊ธฐ
- A, B๋ฅผ ์ ๋ ฅ
- ๊ฐ ์์น์ ๋๋ฌํ ๋ช ๋ น์ด์ ์ต์ ๊ฐ์๋ฅผ ์ ์ฅํ๋ vector์ ์ด๋ฏธ ๋ฐฉ๋ฌธํ ์์น์ธ์ง ํ์ธํ๋ vector๋ฅผ ์ ์ธ
- A๋ถํฐ ์์ํ๋ฏ๋ก, A๋ฅผ queue์ ๋ด์์ฃผ๊ณ , ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
- queue์ ๊ฐ์ฅ ์์ ์์๋ฅผ ๊บผ๋
- ์์๋ฅผ ๊ธฐ์ค์ผ๋ก D, S, L, R์ ๋ช ๋ น์ด๋ฅผ ์ํ
- ๊ฐ ๋ช ๋ น์ ๊ฒฐ๊ณผ๋ก ๋์จ ์์น๊ฐ ์ด๋ฏธ ๋ฐฉ๋ฌธํ ์์น์ธ์ง ํ์ธํ๊ณ , ์ด๋ฏธ ๋ฐฉ๋ฌธํ ์์น๋ผ๋ฉด ๋ฌด์
- ๋ฐฉ๋ฌธํ ์์น๊ฐ ์๋๋ผ๋ฉด, ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ ํ, ๊ฒฐ๊ณผ๋ก ๋์จ ์์น๋ฅผ ๋ฐฉ๋ฌธ์ฒ๋ฆฌํ๊ณ ๋ช ๋ น์ด๋ฅผ ์ด์ ๋ช ๋ น์ด์ ํฉ์ณ vector์ ๋์ ์ ์ฅ
- ๊ฒฐ๊ณผ ์์น๋ฅผ queue์ ์ถ๊ฐํ๊ณ , queue์ ์์๋ฅผ ๋ชจ๋ ๊บผ๋ผ ๋๊น์ง 4๋ฒ๋ถํฐ ๋ฐ๋ณต
03. ๐ ๏ธ ์๋๋ณ ์์
1ํ์ฐจ
04. ๐๏ธ ์ ๋ต ์ฝ๋
#include <bits/stdc++.h>
using namespace std;
string solution(int A, int B){
vector<string> graph(10000, "");
vector<bool> visited(10000, false);
queue<int> q;
q.push(A);
visited[A] = true;
while(!q.empty()){
int cur = q.front(); q.pop();
string prev_order = graph[cur];
char dir[4] = {'D', 'S', 'L', 'R'};
int reg;
for(auto& e : dir){
if(e == 'D') reg = (2*cur) % 10000;
else if(e == 'S') reg = (cur == 0 ? 9999 : cur-1);
else if(e == 'L') reg = (cur % 1000) * 10 + (cur / 1000);
else if(e == 'R') reg = (cur % 10) * 1000 + (cur / 10);
if(visited[reg]) continue;
visited[reg] = true;
graph[reg] = (prev_order + e);
q.push(reg);
}
}
return graph[B];
}
int main(){
ios::sync_with_stdio(0); cin.tie(0);
int T;
int A, B;
cin >> T;
while(T--){
cin >> A >> B;
cout << solution(A, B) << "\n";
}
return 0;
}
'Problem Solving > Baekjoon Online Judge (BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [C++] BOJ 11444 - ํผ๋ณด๋์น ์ 6 (0) | 2025.04.20 |
|---|---|
| [C++] BOJ 2638 - ์น์ฆ (0) | 2025.04.20 |
| [C++] BOJ 23289 - ์จํ๊ธฐ ์๋ ! (0) | 2025.04.18 |
| [C++] BOJ 17837 - ์๋ก์ด ๊ฒ์ 2 (0) | 2025.04.17 |
| [C++] BOJ 14890 - ๊ฒฝ์ฌ๋ก (0) | 2025.04.16 |
@ONE_ :: ์ ํธ์
์๋ชป๋ ์ ๋ณด๊ฐ ์๋ค๋ฉด ๋ง์ํด์ฃผ์ธ์!