๐
2025-09-01
๋ฌธ์ ๋งํฌ
๋ฌธ์ ์ค๋ช
n๊ฐ์ ์ก์ ํ์ด ์ ์ ์ ํตํด ํ๋์ ํธ๋ฆฌ ํํ๋ก ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค. ๋น์ ์ ์ด ์ ์ ๋ค ์ค ํ๋๋ฅผ ๋์ด์ ํ์ฌ์ ์ ๋ ฅ๋ง ๋คํธ์ํฌ๋ฅผ 2๊ฐ๋ก ๋ถํ ํ๋ ค๊ณ ํฉ๋๋ค. ์ด๋, ๋ ์ ๋ ฅ๋ง์ด ๊ฐ๊ฒ ๋๋ ์ก์ ํ์ ๊ฐ์๋ฅผ ์ต๋ํ ๋น์ทํ๊ฒ ๋ง์ถ๊ณ ์ ํฉ๋๋ค.
์ก์ ํ์ ๊ฐ์ n, ๊ทธ๋ฆฌ๊ณ ์ ์ ์ ๋ณด wires๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ ์ ๋ค ์ค ํ๋๋ฅผ ๋์ด์ ์ก์ ํ ๊ฐ์๊ฐ ๊ฐ๋ฅํ ๋น์ทํ๋๋ก ๋ ์ ๋ ฅ๋ง์ผ๋ก ๋๋์์ ๋, ๋ ์ ๋ ฅ๋ง์ด ๊ฐ์ง๊ณ ์๋ ์ก์ ํ ๊ฐ์์ ์ฐจ์ด(์ ๋๊ฐ)๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
DFS๋ฅผ ์ด์ฉํด ํ์๋ค. ๋์ด์ง ๋ถ๋ถ์ ์ผ์ชฝ ๋ ธ๋๋ฅผ ํ์ํ์ฌ ์ ์ฒด ๋ ธ๋ ๊ฐ์์์ ์ฐจ์ด๋ฅผ ๊ตฌํ๋ค.
#include <cmath>
#include <vector>
using namespace std;
void dfs(vector<vector<int>>& wires, vector<bool>& check, int v1, int& count)
{
for(int i=0; i<wires.size(); i++)
{
if(check[i]) continue;
check[i] = true;
vector<int> v = wires[i];
if(v[0]==v1 || v[1]==v1)
{
int temp_v1 = v[0]==v1? v[1] : v[0];
count++;
dfs(wires, check, temp_v1, count);
}
check[i] = false;
}
}
int solution(int n, vector<vector<int>> wires) {
int answer = -1;
vector<bool> check(wires.size(), false);
for(int i=0; i<wires.size(); i++)
{
vector<int> v = wires[i];
check[i] = true;
int temp = 1;
dfs(wires, check, v[0], temp);
check[i] = false;
temp = abs(n-temp*2);
answer = answer<0 || answer>=temp? temp : answer;
}
return answer;
}
๋ด๋ฐฐ์บ ์์ ์ ๊ณต๋ ๋ก์ง์ ์ด์ฉํด ๋ฐ๋์ผ์ดํฐ๋ ์๋ฒ๋ก ๋ฉํฐ ์ฑํ
์ซ์ ์ผ๊ตฌ๋ฅผ ๊ตฌํํ๋ค.

OUT OF CHANCES๋ฅผ ์ถ๋ ฅํ๊ณ ๋ต์ด ๋ง์๋ ์คํจ ์ฒ๋ฆฌ๋ฉํฐ์์ ์๋ฒ์ ํด๋ผ์ด์ธํธ์์ ๋๋ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ด ์์ง์ ์ด๋ ต๋ค.
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค - ์ ๋ ฅ๋ง์ ๋๋ก ๋๋๊ธฐ
์ถ์ฒ: ์คํ๋ฅดํ์ฝ๋ฉ ๋ด์ผ๋ฐฐ์์บ ํ