[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ๋ฏธ๋กœ ํƒˆ์ถœ(C++)

2023. 6. 7. 12:45ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

https://school.programmers.co.kr/learn/courses/30/lessons/159993#qna

๋‚ด ํ•ด๋‹ต

๋ฌธ์ œ ์ ‘๊ทผ์€ ์‰ฝ์ง€๋งŒ, ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋•Œ๋ฌธ์— ๊ณ ์ƒํ•œ ๋ฌธ์ œ์ด๋‹ค.

๋ฌธ์ œ์—๋Š” ‘์ถœ๊ตฌ๋Š” ๋ ˆ๋ฒ„๊ฐ€ ๋‹น๊ฒจ์ง€์ง€ ์•Š์•„๋„ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ํ†ต๋กœ, ์ถœ๊ตฌ, ๋ ˆ๋ฒ„, ์‹œ์ž‘์ ์€ ์—ฌ๋Ÿฌ ๋ฒˆ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.’ ๋ผ๊ณ  ์ ํ˜€์žˆ๋Š”๋ฐ ๋‚ด ๋ฐฉ์‹์—์„œ๋Š” ์ด๊ฒŒ ํ•จ์ •์ด ๋˜์—ˆ๋‹ค.

๋ชฉ์ ์ง€๋Š” ๋ ˆ๋ฒ„์™€ ์ถœ๊ตฌ 2๊ฐœ๊ฐ€ ์žˆ๋Š”๋ฐ ๊ฐ ๋ชฉ์ ์ง€๊นŒ์ง€ ๊ฐ€๋Š” ๊ธธ์— ์žฌ๋ฐฉ๋ฌธ์€ ์•ˆ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ (์‹œ์ž‘์ →๋ ˆ๋ฒ„) , (๋ ˆ๋ฒ„→ ์ถœ๊ตฌ) ๊ฒฝ๋กœ์— ์žฌ๋ฐฉ๋ฌธ์„ ํ—ˆ์šฉํ•˜๋ฉด ๋„ˆ๋ฌด ๋А๋ฆฌ๋‹ค.

๋”ฐ๋ผ์„œ (์‹œ์ž‘์ →๋ ˆ๋ฒ„) + (๋ฐฉ๋ฌธ ๊ธฐ๋ก ์ดˆ๊ธฐํ™”) + (๋ ˆ๋ฒ„→ ์ถœ๊ตฌ) ์ด๋Ÿฐ ์‹์œผ๋กœ ํ•ด๊ฒฐํ–ˆ๋‹ค. ๊ฒฐ๊ตญ ํ•˜๋‚˜์˜ q์—์„œ BFS๋ฅผ ๋‘ ๋ฒˆ ๋„๋Š” ํ˜•์‹์œผ๋กœ ํ•ด๊ฒฐํ•œ ๊ฒƒ์ด๋‹ค.

#include <string>
#include <vector>
#include <algorithm>
#include <queue>

using namespace std;

int solution(const vector<string> maps) {
    int answer = -1;

    vector<vector<int>> visit(maps.size(), vector<int>(maps[0].size(), 0));
    queue<pair<int, int>> q;
    
    int start_x = -1, start_y = -1;
    int dx[] = {1, -1, 0, 0};
    int dy[] = {0, 0, 1, -1};
    bool lever = false;
    
    // ์‹œ์ž‘์  ์ฐพ๊ธฐ
    for(int y = 0; y < maps.size(); ++y)
    {   
        for(int x = 0; x < maps[0].size(); ++x)
        {
            if(maps[y][x] == 'S')
            {
                start_x = x;
                start_y = y;
                break;
            }
        }
        if(start_x != -1)
            break;
    }
    
    // q์— ์‹œ์ž‘์  ์ถ”๊ฐ€
    q.push({start_x, start_y});
    while(!q.empty())
    {
        int x = q.front().first;
        int y = q.front().second;
        
        q.pop();
        
        // ๋ ˆ๋ฒ„๊ฐ€ ์˜ฌ๋ผ๊ฐ„ ์ƒํƒœ์—์„œ ํƒˆ์ถœ๊ตฌ๋ฅผ ๋งŒ๋‚ฌ์„ ๋•Œ
        if(lever && 'E' == maps[y][x] )
        {
            answer = visit[y][x];
            break;
        }
        
        // ์•„์ง ๋ ˆ๋ฒ„๊ฐ€ ์•ˆ์˜ฌ๋ผ๊ฐ„ ์ƒํƒœ์—์„œ ๋ ˆ๋ฒ„๋ฅผ ๋งŒ๋‚ฌ์„ ๋•Œ
        else if(!lever && 'L' == maps[y][x])
        {
            lever = true;
            int time = visit[y][x];
            
            // q์™€ visit ์ดˆ๊ธฐํ™”
            q = queue<pair<int, int>>();
            fill(visit.begin(), visit.end(), vector(visit[0].size(), 0));
            
            // lever ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ ์„ค์ •
            visit[y][x] = time; 
        }
        
        // ๋‹ค์Œ ๋ฐฉ๋ฌธ์ง€ ์ฐพ๊ธฐ
        for(int i = 0; i < 4; ++i)
        {
            int nx = x+dx[i];
            int ny = y+dy[i];
            
            if(nx >= 0 && ny >= 0 && nx < maps[0].size() && ny < maps.size())
                if(maps[ny][nx] != 'X' && visit[ny][nx] == 0)
                {
                    q.push({nx, ny});       
                    visit[ny][nx] = visit[y][x] + 1;
                }
        }
    }

    return answer;
}

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ–ฅ๏ธ Study Note > Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ์กฐ์ด์Šคํ‹ฑ(C++)  (1) 2023.06.10
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ๋กค์ผ€์ดํฌ ์ž๋ฅด๊ธฐ(C++)  (0) 2023.06.08
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ๋‹จ์† ์นด๋ฉ”๋ผ(C++)  (0) 2023.06.06
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ์š”๊ฒฉ ์‹œ์Šคํ…œ(C++)  (1) 2023.06.05
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ์ด์ค‘์šฐ์„ ์ˆœ์œ„ํ(C++)  (0) 2023.06.04
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ์กฐ์ด์Šคํ‹ฑ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ๋กค์ผ€์ดํฌ ์ž๋ฅด๊ธฐ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ๋‹จ์† ์นด๋ฉ”๋ผ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ์š”๊ฒฉ ์‹œ์Šคํ…œ(C++)
Beankong_
Beankong_
์ฃผ๋‹ˆ์–ด ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ณต๋ถ€ ๊ธฐ๋ก
  • Beankong_
    Beankong's Devlog
    Beankong_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (146)
      • โ›… Daily (0)
      • ๐Ÿ–ฅ๏ธ Study Note (2)
        • C++ (1)
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • ๐Ÿงญ Devlog (8)
        • ์˜ค๋‹ต๋…ธํŠธ (4)
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๋งํฌ

    • ๊ณต์ง€์‚ฌํ•ญ

    • ์ธ๊ธฐ ๊ธ€

    • ํƒœ๊ทธ

      ํ—ฌํ…Œ์ด์ปค
      ๊ทธ๋ฆฌ๋””(greedy)
      ์•Œ๊ณ ๋ฆฌ์ฆ˜
      OnlineSubsystem
      unrealengine module
      UnrealEngine
      propertyaccess
      ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
      UnrealEngine5
      ๊ทธ๋ž˜ํ”„ ์ˆœํšŒ
      ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      programmers
      ๊ฒŒ์ž„ ๋ชจ์ž‘
      ๊ฒŒ์ž„ ๊ฐœ๋ฐœ
      ํ”„๋ฃŒ๊ทธ๋ž˜๋จธ์Šค
      ๊ฒŒ์ž„ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
      cpp
      unrealengine build system
      ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    • ์ตœ๊ทผ ๋Œ“๊ธ€

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
    Beankong_
    [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.2 - ๋ฏธ๋กœ ํƒˆ์ถœ(C++)
    ์ƒ๋‹จ์œผ๋กœ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”