HyeLog
๋ฐฑ์ค_14395_4์ฐ์ฐ ๋ณธ๋ฌธ
๐โ๏ธ ๋ฌธ์
https://www.acmicpc.net/problem/14395
14395๋ฒ: 4์ฐ์ฐ
์ฒซ์งธ ์ค์ ์ ์ s๋ฅผ t๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ๋ค. s์ t๊ฐ ๊ฐ์ ๊ฒฝ์ฐ์๋ 0์, ๋ฐ๊ฟ ์ ์๋ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค. ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ด ์ฌ๋ฌ ๊ฐ์ง๋ผ๋ฉด, ์ฌ์ ์์ผ๋ก ์์๋ ๊ฒ์ ์ถ๋ ฅํ๋ค. ์ฐ์ฐ์ ์
www.acmicpc.net
๐งฉ ์๊ณ ๋ฆฌ์ฆ
์ต์ ํ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ฏ๋ก BFS ์๊ณ ๋ฆฌ์ฆ
์ ์ : ์ ์
๊ฐ์ : ์ ์ → ์ ์
๐ก ์์ด๋์ด
์ด ๋ฌธ์ ๋ BFS๋ก ์ต์ ํ์๊ฐ ๋๋ ๊ฒฝ๋ก๋ฅผ ๊ตฌํด์ผ ํ๋ค.
๋ฐ๋ผ์, ํ์ ์ ์ ๋ง ๋ฃ๋ ๊ฒ์ด ์๋๋ผ, stringํ์ผ๋ก ๊ฒฝ๋ก๊น์ง ๋ฃ๋๋ค.
์ ์ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๊ธฐ ์ํด์ set์ ์ฌ์ฉํ๋ค.
๐ฉ๐ป ์ฝ๋
#include <iostream>
#include <queue>
#include <tuple>
#include <cstring>
#include <set>
using namespace std;
const long long limit = 1000000000LL;
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
// input
long long s, t;
cin >> s >> t;
// BFS
set<long long> visited; // ๋ฐฉ๋ฌธ ์ฌ๋ถ ์ฒดํฌ
queue<pair<long long, string>> q;
q.push(make_pair(s, ""));
visited.insert(s);
while (!q.empty()) {
long long cur;
string str; // ๊ฒฝ๋ก
tie(cur, str) = q.front();
q.pop();
if (cur == t) { // t๋ก ๋ฐ๊ฟจ์ผ๋ฉด ์ถ๋ ฅ
if (str.length() == 0) { // s์ t๊ฐ ๊ฐ์ ๊ฒฝ์ฐ
str = "0";
}
cout << str << '\n';
return 0;
}
// *, +, -, / ์์ผ๋ก ์ฐ์ฐ
if (0 <= cur * cur && cur * cur <= limit && visited.count(cur * cur) == 0) {
q.push(make_pair(cur * cur, str + "*"));
visited.insert(cur * cur);
}
if (0 <= cur + cur && cur + cur <= limit && visited.count(cur + cur) == 0) {
q.push(make_pair(cur + cur, str + "+"));
visited.insert(cur + cur);
}
if (0 <= cur - cur && cur - cur <= limit && visited.count(cur - cur) == 0) {
q.push(make_pair(cur - cur, str + "-"));
visited.insert(cur - cur);
}
if (cur != 0 && 0 <= cur / cur && cur / cur <= limit && visited.count(cur / cur) == 0) { // 0 ์กฐ๊ฑด ์ฒ๋ฆฌ
q.push(make_pair(cur / cur, str + "/"));
visited.insert(cur / cur);
}
}
cout << -1 << '\n'; // t๋ก ๋ฐ๊ฟ ์ ์๋ ๊ฒฝ์ฐ
return 0;
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค_17086_์๊ธฐ ์์ด2 (0) | 2022.07.08 |
---|---|
๋ฐฑ์ค_5014_์คํํธ๋งํฌ (0) | 2022.07.06 |
๋ฐฑ์ค_10026_์ ๋ก์์ฝ (0) | 2022.07.02 |
๋ฐฑ์ค_1963_์์ ๊ฒฝ๋ก (0) | 2022.07.02 |
๋ฐฑ์ค_12886_๋๊ทธ๋ฃน (0) | 2022.06.24 |