๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[C++/PGS] [PCCP ๋ชจ์˜๊ณ ์‚ฌ #1] 3๋ฒˆ - ์œ ์ „๋ฒ•์น™ ๐Ÿคฏ

by xxilliant 2025. 5. 2.
728x90
๋ฐ˜์‘ํ˜•

 

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ํšŒ์ฐจ๋„ ์™„๋ฃŒ!

 

728x90
๋ฐ˜์‘ํ˜•