์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- CVE
- BFS
- ๋ฐฑํธ๋ํน
- ์๋ฎฌ๋ ์ด์
- GCP
- error
- thymeleaf
- ์คํ
- ์์ ์ ๋ ฌ
- Reversing
- Spring
- ์ฌ๊ท
- ๊ทธ๋ฆฌ๋
- ์ฐ์ ์์ ํ
- ๋งต
- dynamic debugging
- ์ด๋ถ ํ์
- ๊ตฌํ
- ์ต๋จ ๊ฒฝ๋ก
- ๋์ ํฉ
- ๋ฌธ์์ด
- DP
- dfs
- ๋ฐ์ดํฌ์คํธ๋ผ
- ๋ถํ ์ ๋ณต
- web
- JPA
- c++
- java
- OS
- Today
- Total
hades
[Baekjoon] 16928๋ฒ: ๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์ ๋ณธ๋ฌธ
๐ฅ ๋ฌธ์
https://www.acmicpc.net/problem/16928
๐ ์ค๊ณ
์ฃผ์ฌ์๋ฅผ ๋์ ธ์ ์ด๋ํ๋๋ฐ, ์ด๋ํ ์นธ์ด ์ฌ๋ค๋ฆฌ๋ฉด, ์ฌ๋ค๋ฆฌ๋ฅผ ํ๊ณ ์๋ก ์ฌ๋ผ๊ฐ๋ค. ๋ฑ์ด ์๋ ์นธ์ ๋์ฐฉํ๋ฉด, ๋ฑ์ ๋ฐ๋ผ์ ๋ด๋ ค๊ฐ๊ฒ ๋๋ค. ์ฌ๋ผ๊ฐ๋ค๋ ๊ฒ์ ํ์ฌ ์์นํ ์นธ๋ณด๋ค ๋ฒํธ๊ฐ ํฐ ์นธ์ผ๋ก ์ด๋ํ๋ค๋ ๊ฒ์ด๊ณ , ๋ด๋ ค๊ฐ๋ค๋ ๊ฒ์ ํ์ฌ ์์นํ ์นธ๋ณด๋ค ๋ฒํธ๊ฐ ์์ ์นธ์ผ๋ก ์ด๋ํ๋ค๋ ๊ฒ์ด๋ค. ์ฃผ์ํค์ผํ ๊ฒ์ ์ฌ๋ค๋ฆฌ๋ ๋ฑ์ ๋ง๋๋ฉด ๋ฌด์กฐ๊ฑด ์ด์ฉํด์ผ ํ๊ณ , ํ ์นธ์ ์ฌ๋ค๋ฆฌ๊ฐ ์๊ฑฐ๋, ๋ฑ์ด ์๊ฑฐ๋, ๋น์ด์๋ค๋ ๊ฒ์ด๋ค.
์ถ๋ฐ์ง์ธ 1์์ ๋ชฉ์ ์ง์ธ 100๊น์ง ์ด๋ํ๊ธฐ ์ํด, '์ฌ๋ค๋ฆฌ๋ ๋์ ๋ฒํธ์ ์นธ์ผ๋ก ์ด๋์์ผ ๋๋ฌธ์ ์ฌ๋ค๋ฆฌ๋ง ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒ ์๋๊ฐ? '๋ผ๋ ์๊ฐ์ ํ ์ ์์ง๋ง, ๋ฌด์กฐ๊ฑด ์ฌ๋ค๋ฆฌ๋ง ์ด์ฉํด์ผ๋ง ์ข์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ฆฌ๋ผ๋ ๋ณด์ฅ์ ์๋ค.
์๋ฅผ ๋ค์ด, {(2, 70) (75, 79) (71, 40) (41, 99)}๋ผ๋ ๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ๊ฐ ์์ ๋, ์ฌ๋ค๋ฆฌ๋ง ์ด์ฉํ๋ค๋ฉด, 1 → (2->70) → (75->79) → 85 → 91 → 97 → 100์ผ๋ก ์ฃผ์ฌ์๋ฅผ 6๋ฒ ๋์ ธ์ผ ํ์ง๋ง, ๋ฑ์ ์๋๋ค๋ฉด, 1 → (2->70) → (71->40) → (41->99) → 100์ผ๋ก 4๋ฒ๋ง์ ๋์ฐฉํ ์ ์๋ค. ( → ์ ๊ฐ์๊ฐ ์ฃผ์ฌ์๋ฅผ ๋์ง ํ์์ด๋ค. ๋ฑ ๋๋ ์ฌ๋ค๋ฆฌ๋ฅผ ์ด์ฉํ ๊ฒ์ ->๋ก ๊ตฌ๋ถํ์๋ค)
๋ค์ ๋งํด์, ์ด๋ค ์นธ์ ๋์ฐฉํ์ ๋, ์ฃผ์ฌ์๋ฅผ ๋์ ธ +1๋ถํฐ +6๊น์ง ์ด๋์์ผ์ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ฏ๋ก, BFS๋ฅผ ์ด์ฉํด์ผ ํจ์ ์์๋ผ ์ ์๋ค.
๊ฐ ์นธ์๋ ์ฌ๋ค๋ฆฌ๊ฐ ์๊ฑฐ๋, ๋ฑ์ด ์๊ฑฐ๋, ์๋ฌด๊ฒ๋ ์์ผ๋ฏ๋ก, ์ผ์ฐจ์ ๋ฒกํฐ(link)๋ก ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ์ ์ฅํ์๋ค. ๋ง์ฝ, ์ด๋ค ์นธ์ ์ฌ๋ค๋ฆฌ๋ ์๊ณ , ๋ฑ๋ ์์ ์ ์์๋ค๋ฉด, ์ด์ฐจ์ ๋ฒกํฐ๊ฐ ํ์ํ์์ ๊ฒ์ด๋ค.
์ฃผ์ฌ์๋ฅผ ๋์ง๋ ์ต์ ํ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด, ํ์ ์ ๋ณํด์ ๋ด๊ธฐ ์ํด, ๊ฐ ์นธ๊น์ง ๋๋ฌํ๊ธฐ ์ํด ๋์ง ์ฃผ์ฌ์์ ์ต์ ํ์๋ฅผ ์ผ์ฐจ์ ๋ฒกํฐ(rolloing_count)์ ์ ์ฅํ๋ค.
ํ์์ ํ์ฌ ์์น(cur_loc)๋ฅผ ํ๋์ฉ ๊บผ๋ด๋ฉด์, ํ์ฌ ์์น์์ ์ฃผ์ฌ์๋ฅผ ๋์ง ๊ฒฐ๊ณผ๋ฅผ ๋ํด ๋ค์ ์์น(next_loc)๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ์นธ์ ๋ฑ์ด๋ ์ฌ๋ค๋ฆฌ๊ฐ ์๋ค๋ฉด ๋ฑ์ด๋ ์ฌ๋ค๋ฆฌ๋ฅผ ์ด์ฉํ๋ค.
๋ง์ฝ, ์ด๋ํ๋ ์์น๊น์ง ๋์ง ํ์๊ฐ ๊ธฐ์กด์ ์ ์ฅํ ํ์๋ณด๋ค ์๋ค๋ฉด, ์๋ก์ด ๊ฒฝ์ฐ์ด๋ฏ๋ก ์ฃผ์ฌ์๋ฅผ ๋์ง ํ์๋ฅผ ๊ฐฑ์ ํ๊ณ , ๊ทธ ์์น๋ฅผ ํ์ ์ถ๊ฐํ๋ค.
๐ ํ์ด
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int n, m, x, y, u, v;
vector<int> link(101);
vector<int> rolling_count(101, 1e9 + 7);
void game() {
queue<int> q;
q.push(1);
rolling_count[1] = 0;
while (!q.empty()) {
int cur_loc = q.front();
q.pop();
for (int i = 1; i <= 6; i++) {
int next_loc = cur_loc + i;
if (next_loc > 100) {
continue;
}
if (link[next_loc] != 0) {
next_loc = link[next_loc];
}
if (rolling_count[next_loc] > rolling_count[cur_loc] + 1) {
rolling_count[next_loc] = rolling_count[cur_loc] + 1;
q.push(next_loc);
}
}
}
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> x >> y;
link[x] = y;
}
for (int i = 0; i < m; i++) {
cin >> u >> v;
link[u] = v;
}
game();
cout << rolling_count[100] << "\n";
return 0;
}
'๐ PS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1766๋ฒ: ๋ฌธ์ ์ง (0) | 2024.09.30 |
---|---|
[Baekjoon] 1138๋ฒ: ํ ์ค๋ก ์๊ธฐ (0) | 2024.09.25 |
[Baekjoon] 2252๋ฒ: ์ค์ธ์ฐ๊ธฐ (0) | 2024.09.23 |
[Baekjoon] 2143๋ฒ: ๋ ๋ฐฐ์ด์ ํฉ (0) | 2024.09.20 |
[Baekjoon] 1202๋ฒ: ๋ณด์ ๋๋ (0) | 2024.09.19 |