https://school.programmers.co.kr/learn/courses/15008/lessons/121685
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค PCCP ๋ชจ์๊ณ ์ฌ 1ํ - 3๋ฒ
์์์๊ฐ 1์๊ฐ ์ด์ (ํํธ ์ฐธ๊ณ ํจ)
stack ํ์ฉํ ์ํ ์ฐ์ฐ, dfs/bfs๋ก๋ ๊ฐ๋ฅํ ๋ฏ, ์ถ์ ๋์ด๋๋ level 2-3
4๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์คํ์ ๋ฃ์ด์ฃผ๊ณ ,
๊ฐ์ฅ ์์ ๋ถ๋ชจ๋ถํฐ ๊บผ๋ด์ด ๊ทธ ์์์ ์ฐพ๋๋ค. (top -> down)
๊ทธ๋ฆฌ๊ณ , "RR"์ด๋ "rr"์ผ ๊ฒฝ์ฐ์๋ ์์์ด ํญ์ ๋ถ๋ชจ์ ๋์ผํ๋ฏ๋ก breakํด์ค๋ค
๋๋จธ์ง๋ฅผ ์ฐ์ฐํด์ผ ํ๊ณ , ๋ฐ๋ณต์ ์ผ๋ก ๋์ค๋ ํจํด์ ๊ณ ๋ฏผํด์ผ ํ๋ ๋ถ๋ถ์์ ๊ฝค ์ด๋ ค์ ๋ค ใ ใ
๋์ ํ์ด
#include <string>
#include <vector>
#include <iostream>
#include <stack>
using namespace std;
vector<string> solution(vector<vector<int>> queries) {
vector<string> answer;
for (auto q : queries) {
string parent = "Rr";
int n = q[0];
int m = q[1] - 1; // 0๋ถํฐ ์ฐ์ฐ
stack<int> s; // ๋๋จธ์ง ์ ์ฅ
for (int i = 0; i < n - 1; ++i) {
s.push(m%4);
m /= 4;
}
while (!s.empty()) {
int now = s.top(); // parent๋ฅผ ๊ฐฑ์ ํ๋ฉฐ(๊ฐ์ฅ ์์ ๋ถ๋ชจ๋ถํฐ) ๋ฐ๋ณต๋ฌธ ์งํ
s.pop();
if (parent == "Rr") {
if (now == 0) parent = "RR";
else if (now == 1 || now == 2) parent = "Rr";
else if (now == 3) parent = "rr";
} else { // "rr"์ด๋ "RR"์ด๋ฉด ๋ ์ด์ ๋ฐ๋์ง ์์
break;
}
}
answer.push_back(parent);
}
return answer;
}
2ํ์ฐจ ๋ชจ์๊ณ ์ฌ์ ์ด์ด์ 1ํ์ฐจ๋ ์๋ฃ!
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/PGS] [PCCP ๊ธฐ์ถ๋ฌธ์ ] 4๋ฒ - ์๋ ์์ง์ด๊ธฐ (1) | 2025.05.02 |
---|---|
[C++/PGS] [PCCP ๊ธฐ์ถ๋ฌธ์ ] 1๋ฒ - ๋ถ๋ ๊ฐ๊ธฐ (0) | 2025.05.02 |
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #1] 2๋ฒ - ์ฒด์ก๋ํ (0) | 2025.05.02 |
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #1] 1๋ฒ - ์ธํจ์ด ์ํ๋ฒณ (0) | 2025.05.02 |
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #1] 4๋ฒ - ์ด์์ฒด์ (0) | 2025.05.02 |