Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

4 mjj111 #186

Merged
merged 2 commits into from
Aug 11, 2024
Merged

4 mjj111 #186

merged 2 commits into from
Aug 11, 2024

Conversation

mjj111
Copy link
Collaborator

@mjj111 mjj111 commented May 30, 2024

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํ‘œํŽธ์ง‘
https://school.programmers.co.kr/learn/courses/30/lessons/81303
image

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์–‘๊ณผ๋Š‘๋Œ€
https://school.programmers.co.kr/learn/courses/30/lessons/92343
image

โœ”๏ธ ์†Œ์š”๋œ ์‹œ๊ฐ„

ํ‘œํŽธ์ง‘ 1 ์‹œ๊ฐ„ 30๋ถ„ (๋ฌธ์ œ๋ฅผ ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ์ ‘๊ทผํ–ˆ์Šต๋‹ˆ๋‹ค ใ… )
์–‘๊ณผ ๋Š‘๋Œ€ 50๋ถ„

โœจ ๊ฐ„๋žตํ•œ ์ฝ”๋“œ ์„ค๋ช…

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํ‘œํŽธ์ง‘
ํ‘œํŽธ์ง‘ ๋ฌธ์ œ๋Š” ๋ช…๋ น์–ด์— ๋”ฐ๋ผ ํ‘œ๋ฅผ ๊ฐฑ์‹ ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ,
๊ฐ ๋ช…๋ น์–ด์— ๋”ฐ๋ผ ๋‹จ์ˆœํžˆ ์นธ ์ด๋™๋งŒ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

        for (String c : cmd) {
            if (c.charAt(0) == 'U') {
                int value = Integer.parseInt(c.split(" ")[1]);
                now -= value;
                continue;
            }
            if (c.charAt(0) == 'D') {
                int value = Integer.parseInt(c.split(" ")[1]);
                now += value;
                continue;
            }
            if (c.charAt(0) == 'C') {
                cancels.push(now);
                totalRows--;
                if (now == totalRows) now--;
                continue;
            }
            if (c.charAt(0) == 'Z') {
                int cancelledRow = cancels.pop();
                if (cancelledRow <= now) now++;
                totalRows++;
            }
        }

๊ฐ ๋ช…๋ น์–ด๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

'U x': ํ˜„์žฌ ์„ ํƒ๋œ ํ–‰์„ x๋งŒํผ ์œ„๋กœ ์ด๋™ (now -= value).
'D x': ํ˜„์žฌ ์„ ํƒ๋œ ํ–‰์„ x๋งŒํผ ์•„๋ž˜๋กœ ์ด๋™ (now += value).
'C': ํ˜„์žฌ ์„ ํƒ๋œ ํ–‰์„ ์‚ญ์ œํ•˜๊ณ , ์Šคํƒ์— ์ €์žฅ. ํ–‰ ๊ฐœ์ˆ˜๋ฅผ ์ค„์ž„. ํ˜„์žฌ ์„ ํƒ๋œ ํ–‰์ด ๋งˆ์ง€๋ง‰ ํ–‰์ด์—ˆ๋‹ค๋ฉด ํ•œ ์นธ ์œ„๋กœ ์ด๋™.
'Z': ๋งˆ์ง€๋ง‰์œผ๋กœ ์‚ญ์ œํ•œ ํ–‰์„ ๋ณต์›. ์‚ญ์ œ๋œ ํ–‰์ด ํ˜„์žฌ ์„ ํƒ๋œ ํ–‰๋ณด๋‹ค ์•ž์— ์žˆ์œผ๋ฉด ํ˜„์žฌ ์„ ํƒ๋œ ํ–‰์„ ํ•œ ์นธ ์•„๋ž˜๋กœ ์ด๋™. ํ–‰ ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ฆผ.

๊ฒฐ๊ณผ์ ์œผ๋กœ,
StringBuilder๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
๋ชจ๋“  ๋‚จ์•„์žˆ๋Š” ํ–‰์— ๋Œ€ํ•ด 'O'๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉฐ ์Šคํƒ์—์„œ ์‚ญ์ œ๋œ ํ–‰์˜ ์ธ๋ฑ์Šค๋ฅผ ๊บผ๋‚ด 'X'๋ฅผ ํ•ด๋‹น ์œ„์น˜์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < totalRows; i++) {
            sb.append("O");
        }
        
        while (!cancels.isEmpty()) {
            sb.insert(cancels.pop().intValue(), "X");
        }
        
        return sb.toString();
    }
}

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์–‘๊ณผ๋Š‘๋Œ€
์–‘๊ณผ ๋Š‘๋Œ€์˜ ๋ฌธ์ œ๋Š” ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜์—ฌ ๊ฐ€์žฅ ๋งŽ์€ ์–‘์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ธ๋ฐ,
DFS๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ „ํ˜•์ ์ธ DFS์˜ ๋ชจ์Šต์„ ๊ฐ–๊ณ  ์žˆ์–ด์„œ.. ๋‹ค๋“ค ์•„์‹œ๊ฒ ์ง€๋งŒ..

private void dfs(int now, int sheepCnt, int wolfCnt, Set<Integer> nexts) {
dfs ๋ฉ”์„œ๋“œ๋Š” ํ˜„์žฌ ๋…ธ๋“œ(now), ํ˜„์žฌ๊นŒ์ง€์˜ ์–‘ ์ˆ˜(sheepCnt), ๋Š‘๋Œ€ ์ˆ˜(wolfCnt), ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ์— ํƒ์ƒ‰ํ•  ๋…ธ๋“œ ๋ชฉ๋ก(nexts)์„ ์ธ์ž๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค.

        if (info[now] == 0) sheepCnt++;
        else wolfCnt++;

        if (wolfCnt >= sheepCnt) return;
        maxSheepCnt = Math.max(sheepCnt, maxSheepCnt);

ํ˜„์žฌ ๋…ธ๋“œ๊ฐ€ ์–‘์ธ์ง€ ๋Š‘๋Œ€์ธ์ง€์— ๋”ฐ๋ผ sheepCnt ๋˜๋Š” wolfCnt๋ฅผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
๋Š‘๋Œ€ ์ˆ˜๊ฐ€ ์–‘ ์ˆ˜๋ณด๋‹ค ๋งŽ์•„์ง€๋ฉด ํ•ด๋‹น ๊ฒฝ๋กœ ํƒ์ƒ‰์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.
ํ˜„์žฌ๊นŒ์ง€์˜ ์ตœ๋Œ€ ์–‘ ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

        // ๋‹ค์Œ ํƒ์ƒ‰ ์œ„์น˜ ๋ณต์‚ฌ 
        Set<Integer> copySet = new HashSet<>(nexts);
        
        // ๋‹ค์Œ ํƒ์ƒ‰ ๋ชฉ๋ก์ค‘ ํ˜„์žฌ ์œ„์น˜์ œ์™ธ
        copySet.remove(now);
        
        for(int[] edge : edges) {
            int start = edge[0];
            int end = edge[1];
            if(start == now) copySet.add(end);
        }

ํ˜„์žฌ ํƒ์ƒ‰ ์œ„์น˜๋ฅผ ์ œ์™ธํ•œ ๋‹ค์Œ ํƒ์ƒ‰ ์œ„์น˜๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
ํ˜„์žฌ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋œ ์ž์‹ ๋…ธ๋“œ๋ฅผ copySet์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

        for (int next : copySet) {
            dfs(next, sheepCnt, wolfCnt, copySet);
        }
    }
}

copySet์— ์žˆ๋Š” ๊ฐ ๋…ธ๋“œ์— ๋Œ€ํ•ด ์žฌ๊ท€์ ์œผ๋กœ dfs๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํƒ์ƒ‰์„ ๊ณ„์†ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฒ˜์Œ์—๋Š” ๊ทธ๋ฆฌ๋””๋กœ ํ• ๊นŒ.. ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€์•Š์„๊นŒ... ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์‹œ๊ฐ„์„ ์ข€ ์ผ๊ณ ,
    ์ดํ›„์—๋Š” ๋‹ค์Œ ํƒ์ƒ‰ ์œ„์น˜ ๋ณต์‚ฌ ๋ถ€๋ถ„์—์„œ ํ—ท๊ฐˆ๋ ค์„œ ๊ณ„์† ํ‹€๋ ธ์—ˆ์Šต๋‹ˆ๋‹ค ใ…Ž

๐Ÿ“š ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ๋‚ด์šฉ

๋ฌธ์ œ๋ฅผ ๋„ˆ๋ฌด ์–ด๋ ต๊ฒŒ ํ•ด์„ํ•˜๋ ค ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ ๊ทธ๋Œ€๋กœ ์ ‘๊ทผํ•˜๊ณ , ์ดํ›„์— ์ตœ์ ํ™”๋ฅผ ํ–ˆ์–ด์•ผ ํ–ˆ๋Š”๋ฐ.. ๋จผ์ € ์ตœ์ ํ™”๋œ ๋ฐฉ๋ฒ•์„ ๋ชจ์ƒ‰ํ•˜๋Š” ์‹ค์ˆ˜๊ฐ€ ์žฆ๋„ค์š”
์œ„ ๋‘ ๋ฌธ์ œ์—์„œ ๋ผˆ์ €๋ฆฌ๊ฒŒ ๋‹ค์‹œ ๋Š๊ผˆ๊ณ  ๊ณ ์ณ์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค ใ… 

Copy link
Collaborator

@9kyo-hwang 9kyo-hwang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1. ์–‘๊ณผ ๋Š‘๋Œ€

ํŠธ๋ฆฌ ์ˆœํšŒ์ธ๋ฐ, ๋ฐฉ๋ฌธํ–ˆ๋˜ ์ง€์ ์„ "๋‹ค์‹œ ๋ฐฉ๋ฌธ"ํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ Visited ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์žฅํ•˜๋Š” ์•„์ด๋””์–ด๊นŒ์ง„ ์ข‹์•˜๋Š”๋ฐ...

๋Š‘๋Œ€/์–‘ ์นด์šดํŒ…์€ 1๋ฒˆ๋งŒ ์ผ์–ด๋‚˜์•ผ ํ•˜๋‹ˆ๊นŒ, ๋ฐฉ๋ฌธํ–ˆ๋˜ ์ง€์ ์„ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•  ๋• ์นด์šดํŒ…์„ ํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฒฐ๊ตญ ๋ชป์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ๋ฅผ ๋ด๋ฒ„๋ ธ๋„ค์š”...

์ œ ๊ฒฝ์šฐ์—”

  1. Visited ๋ฆฌ์ŠคํŠธ๋ฅผ [ํ˜„์žฌ ๋…ธ๋“œ][์–‘ ์ˆ˜][๋Š‘๋Œ€ ์ˆ˜] 3๊ฐœ๋ฅผ ๋™์‹œ์— ํ™•์ธํ•˜๋„๋ก 3์ฐจ์›์œผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  2. ์–‘/๋Š‘๋Œ€ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” Info ๋ฆฌ์ŠคํŠธ์— "ํ™•์ธํ•จ"์„ ์˜๋ฏธํ•˜๋Š” '2' ๊ฐ’์„ ๊ธฐ๋กํ•ด, ๋ฐฑํŠธ๋ž˜ํ‚น ๊ณผ์ •์—์„œ Info[node] == 2์ด๋ฉด ์นด์šดํŒ… ํ•˜์ง€ ์•Š๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ „์ฒด ์ฝ”๋“œ

#include <string>
#include <vector>
#include <algorithm>
#include <functional>

using namespace std;

int solution(vector<int> Info, vector<vector<int>> Edges) 
{
    enum EInfo
    {
        Sheep = 0,
        Wolf = 1,
        Checked = 2
    };
    
    const int N = Info.size();

    vector<vector<int>> Tree(N);
    for(const auto& Edge : Edges)
    {
        Tree[Edge[0]].emplace_back(Edge[1]);
        Tree[Edge[1]].emplace_back(Edge[0]);
    }
    
    vector<vector<vector<bool>>> Visited(N, vector(N + 1, vector(N + 1, false)));
    Visited[0][1][0] = true;
    Info[0] = EInfo::Checked;
    
    int Answer = 0;
    function<void(int, int, int)> Backtracking = [&](int Src, int Sheep, int Wolf)
    {
        Answer = max(Answer, Sheep);
        for(int Dst : Tree[Src])
        {
            if(Info[Dst] == EInfo::Sheep && !Visited[Dst][Sheep + 1][Wolf])
            {
                Visited[Dst][Sheep + 1][Wolf] = true;
                Info[Dst] = EInfo::Checked;
                Backtracking(Dst, Sheep + 1, Wolf);
                Info[Dst] = EInfo::Sheep;
                Visited[Dst][Sheep + 1][Wolf] = false;
            }
            else if(Info[Dst] == EInfo::Wolf && Sheep > Wolf + 1 && !Visited[Dst][Sheep][Wolf + 1])
            {
                Visited[Dst][Sheep][Wolf + 1] = true;
                Info[Dst] = EInfo::Checked;
                Backtracking(Dst, Sheep, Wolf + 1);
                Info[Dst] = EInfo::Wolf;
                Visited[Dst][Sheep][Wolf + 1] = false;
            }
            else if(Info[Dst] == EInfo::Checked && !Visited[Dst][Sheep][Wolf])
            {
                Visited[Dst][Sheep][Wolf] = true;
                Backtracking(Dst, Sheep, Wolf);
                Visited[Dst][Sheep][Wolf] = false;
            }
        }
    }; Backtracking(0, 1, 0);
    
    return Answer;
}

2. ํ‘œ ํŽธ์ง‘

์ƒ๊ธด ๊ฒŒ ๋ญ”๊ฐ€ ๋”ฑ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋ฌธ์ œ๊ธธ๋ž˜ C++์˜ "list" ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์จ์„œ ๋šฑ๋•…๋šฑ๋•… ์ฝ”๋“œ ์งฐ๋Š”๋ฐ ๋ƒ…๋‹ค ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋‚˜๋”๋ผ๊ตฌ์š”...?
๋ญ์ง€... ํ•˜๋ฉด์„œ ์งˆ๋ฌธ ๊ฒŒ์‹œํŒ ๋’ค์ ธ๋ดค๋Š”๋ฐ ๋ฆฌ์ŠคํŠธ ์“ฐ์ง€ ๋ง๊ณ  vector(Java์˜ ArrayList)์จ๋ผ๋Š” ๊ธ€์ด ์žˆ๊ธธ๋ž˜ ๋ฐ”๊ฟจ๋Š”๋ฐ ์ง„์งœ๋กœ ๋˜๋”๋ผ๊ตฌ์š”...?
๋ญ”๊ฐ€๋ญ”๊ฐ€ํ•œ ์ผ์ด์—ˆ์Šต๋‹ˆ๋‹ค...

์ „์ฒด ์ฝ”๋“œ

#include <string>
#include <vector>

using namespace std;

struct FCell
{
    int Up, Index, Down;
    FCell(int InUp, int InIndex, int InDown) 
        : Up(InUp), Index(InIndex), Down(InDown)
        {

        }
};

string solution(int n, int k, vector<string> InCommand) {
    vector<FCell> Table;
    for(int i = 0; i <= n; ++i)
    {
        Table.emplace_back(i - 1, i, i + 1);
    }
    vector<FCell> PoppedCell;
    string Answer(n, 'O');
    
    auto CommandU = [&](int X)
    {
        while(X--)
        {
            k = Table[k].Up;
        }
    };
    
    auto CommandD = [&](int X)
    {
        while(X--)
        {
            k = Table[k].Down;
        }
    };
    
    auto CommandC = [&]()
    {
        PoppedCell.emplace_back(Table[k]);
        const auto& [Up, Index, Down] = Table[k];
        
        if(0 <= Up)
        {
            Table[Up].Down = Down;
        }
        if(Down < n)
        {
            Table[Down].Up = Up;
        }
        
        Answer[k] = 'X';
        
        k = (Down == n ? Up : Down);
    };
    
    auto CommandZ = [&]()
    {
        const auto& [Up, Index, Down] = PoppedCell.back();
        PoppedCell.pop_back();
        
        if(0 <= Up)
        {
            Table[Up].Down = Index;
        }
        if(Down < n)
        {
            Table[Down].Up = Index;
        }
        
        Answer[Index] = 'O';
    };
    
    for(const string& Command : InCommand)
    {
        switch(Command[0])
        {
            case 'U':
                CommandU(stoi(Command.substr(2)));
                break;
            case 'D':
                CommandD(stoi(Command.substr(2)));
                break;
            case 'C':
                CommandC();
                break;
            case 'Z':
                CommandZ();
                break;
            default: 
                break;
        }
    }
    
    return Answer;
}

์•„๋‹ˆ ๊ทผ๋ฐ ์šฐ์งธ Stack ํ•˜๋‚˜๋กœ ๋‹ค ํ•ด๊ฒฐํ•˜์…จ๋Œ€์š”...


์–‘๊ณผ ๋Š‘๋Œ€ ๋ฌธ์ œ ๊ด€๋ จํ•ด์„œ ์ข€ ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ๊นŒ, ์›๋ž˜ ์˜๋„๋Œ€๋กœ๋ผ๋ฉด "๋ฐฑํŠธ๋ž˜ํ‚น์„ ์ด์šฉํ•œ ์™„์ „ ํƒ์ƒ‰์€ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค"๋ผ๊ณ  ํ•˜๋„ค์š”.
๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ์ค‘๋ณต ์ผ€์ด์Šค๋กœ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

info = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
edges = [[0, 1], [0, 2], [1, 3], [1, 4], [2, 5], [2, 6], [3, 7], [3, 8], [4, 9], [4, 10], [5, 11], [5, 12], [6, 13], [6, 14], [7, 15], [7, 16]]
Return = 17

์งˆ๋ฌธ์€ ์•„๋‹ˆ์ง€๋งŒ,,, ์›์น™์ ์œผ๋กœ ๋ฐฑํŠธ๋ž˜ํ‚น(or ์™„์ „ํƒ์ƒ‰)์€ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ž˜๋ชป๋œ ํ’€์ด์ž…๋‹ˆ๋‹ค.

์นด์นด์˜ค ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๊ฐ€ ๋นˆ์•ฝํ•ด์„œ ๊ฐ€๋Šฅํ•œ ํ’€์ด๋ผ๊ณ  ํ•˜๋„ค์š”...?
์›์น™๋Œ€๋กœ๋ฉด, ๋น„ํŠธ๋งˆ์Šคํ‚น์„ ์ด์šฉํ•œ Flood Fill ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ’€์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ •ํ•ด C++ ์ฝ”๋“œ

#include <string>
#include <vector>
#include <functional>

using namespace std;

int solution(vector<int> Info, vector<vector<int>> Edges)
{
    const int N = Info.size();
    
    vector<bool> Visited(1 << N, false);
    vector<vector<int>> Graph(N);
    
    for(const auto& Edge : Edges)
    {
        Graph[Edge[0]].emplace_back(Edge[1]);
    }
    
    int Answer = 0;
    function<void(int)> DFS = [&](int Mask)
    {
        if(Visited[Mask]) return;
        
        Visited[Mask] = true;
        int Sheep = 0, Wolf = 0;
        for(int Node = 0; Node < N; ++Node)
        {
            if(Mask & (1 << Node))
            {
                Sheep += (Info[Node] == 0);
                Wolf += (Info[Node] == 1);
            }
        }
        
        if(Sheep <= Wolf) return;
        
        Answer = max(Answer, Sheep);
        for(int Parent = 0; Parent < N; ++Parent)
        {
            if(!(Mask & (1 << Parent))) continue;
            
            for(int Child : Graph[Parent])
            {
                DFS(Mask | (1 << Child));
            }
        }
    }; DFS(1);
    
    return Answer;
}

@9kyo-hwang 9kyo-hwang mentioned this pull request Jun 3, 2024
@9kyo-hwang 9kyo-hwang removed the request for review from Dolchae June 3, 2024 09:35
Copy link
Member

@xxubin04 xxubin04 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ํ’€์–ด๋ณด๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์œผ๋‚˜ ๋„ˆ๋ฌด ์–ด๋ ค์›Œ์„œ ๋ชป ํ’€์—ˆ์Šต๋‹ˆ๋‹ค...
์ €๋Š” ์—„์ฒญ ๋ณต์žกํ•œ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ, ์ •๋ง ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž˜ ํ‘ธ์…จ๋„ค์š”๐Ÿ‘๐Ÿป๐Ÿ‘๐Ÿป
์–‘๊ณผ ๋Š‘๋Œ€ ๋ฌธ์ œ์—์„œ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜๊ฒŒ ๋˜๋Š” ๋…ธ๋“œ๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ• ์ง€ ์–ด๋ ค์› ๋Š”๋ฐ, ๊ตฌํ˜„ํ•˜์‹  ์ฝ”๋“œ๋ฅผ ํ•œ์ฐธ ๋“ค์—ฌ๋‹ค๋ดค๋„ค์š”๐Ÿ˜ฎ
๋•๋ถ„์— ๋งŽ์ด ๋ฐฐ์›Œ๊ฐ‘๋‹ˆ๋‹ค!!!

@9kyo-hwang 9kyo-hwang removed the request for review from gjsk132 August 11, 2024 12:55
@9kyo-hwang 9kyo-hwang merged commit 1fc381a into main Aug 11, 2024
11 checks passed
@9kyo-hwang 9kyo-hwang deleted the 4-mjj111 branch August 11, 2024 12:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants