# 5014. ์Šคํƒ€ํŠธ๋งํฌ
Study Repository

5014. ์Šคํƒ€ํŠธ๋งํฌ

by rlaehddnd0422

https://www.acmicpc.net/problem/5014

 

5014๋ฒˆ: ์Šคํƒ€ํŠธ๋งํฌ

์ฒซ์งธ ์ค„์— F, S, G, U, D๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) ๊ฑด๋ฌผ์€ 1์ธต๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ณ , ๊ฐ€์žฅ ๋†’์€ ์ธต์€ F์ธต์ด๋‹ค.

www.acmicpc.net

 

Point

1. ์˜ฅ์ƒ์€ F์ธต, ์ถœ๋ฐœ ์ธต์€ S์ธต, S์ธต์—์„œ S+U์ธต, S-D์ธต์œผ๋กœ ์ด๋™๊ฐ€๋Šฅํ•˜๋‹ค.

2. ์ด๋™ํ•  ๋•Œ ๋งˆ๋‹ค ํ˜„์žฌ์ธต + 1์„ ์ €์žฅํ•ด ์ค€๋‹ค. G์ธต์— ๋„๋‹ฌํ•˜๋ฉด BFS๋ฅผ ๋ฉˆ์ถ”๋ฉด ๋œ๋‹ค.

 

 

 

์†Œ์Šค์ฝ”๋“œ

#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
#include <queue>
#define FASTio ios_base :: sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL)
#define endl '\n' 
using namespace std;

int f,s,g,u,d;
int visited[1000001];

bool bfs(int index)
{
    queue <int> q;
    q.push(index);
    while(!q.empty())
    {   
        int k = q.front(); 
        
        if(k==g)
        {   
            cout << visited[k]-1;
            return false;
        }
        
        if(k+u<=f)
        {   
            if(visited[k+u]==0)
            {
            q.push(k+u);
            visited[k+u] = visited[k] + 1;
            }
        }

        if(k-d>0)
        {
            if(visited[k-d]==0)
            {
            q.push(k-d);
            visited[k-d] = visited[k] + 1;
            }
        }
        q.pop();
    }
    
    return true;
}

int main()
{
    FASTio;
    cin >> f >> s >> g >> u >> d;

    visited[s]= 1;
    
    if(g==s) {
        cout << 0;
        return 0;
    }
    
    bool stare = bfs(s);
    
    if(stare)
    	cout << "use the stairs";
    

    return 0;
}

Solution

1. ์šฐ์„  ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์€ S์ธต์ด G์ธต๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์ง€ ์•Š์•„๋„ ๋˜๋‹ˆ 0์„ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒํ•œ๋‹ค.

 

2. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ BFS๋ฅผ ์ง„ํ–‰ํ•˜๋Š”๋ฐ, ํ˜„์žฌ ์ธต์„ ํ์— ํ‘ธ์‰ฌํ•˜๊ณ  ํ˜„์žฌ ์ธต(S)์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ธต์ธ S+U์ธต, S-D์ธต์„ ๋ฐฉ๋ฌธํ•œ ์ ์ด ์—†์œผ๋ฉด 

ํ˜„์žฌ ์ธต์˜ ๋ฐฉ๋ฌธ ํšŸ์ˆ˜+1์„ ๋‹ค์Œ ์ธต(S+U, S-D) ์— ์ €์žฅํ•ด์ฃผ๊ณ   ํ˜„์žฌ ์ธต์„ POPํ•œ๋‹ค 

 

3. ์ด๋ ‡๊ฒŒ ํ๋ฅผ ๋Œ๋‹ค๊ฐ€ G์ธต์— ๋„๋‹ฌํ•˜๊ฒŒ ๋˜๋ฉด visited[G]-1์„ print ํ•ด์ฃผ๊ณ  false๋ฅผ ๋ฆฌํ„ด

 

4. ํ๋ฅผ ๋‹ค๋Œ๋ ธ๋Š”๋ฐ๋„ G์ธต์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ True๊ฐ€ ๋ฐ˜ํ™˜๋˜์–ด ๋ฉ”์ธํ•จ์ˆ˜์—์„œ use the stairs๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

 

 

์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ๋ถ„๋ฅ˜๊ฐ€ BFS๋กœ ๋˜์–ด์žˆ๊ธธ๋ž˜, ์ด๊ฒŒ ์™œ BFS๋กœ ํ•ด๊ฒฐํ•˜๋Š”์ง€ ์˜์•„ํ–ˆ๋‹ค.

๊ฒฐ๊ตญ ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š”๋‹ค๋Š” ์ธก๋ฉด์—์„œ ๋ณด๋ฉด BFS๊ฐ€ ๋งž๊ธดํ•˜์ง€๋งŒ, DP๋กœ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง DP๋ฅผ ๋‹ค๋ฃจ๊ธฐ์— ์„œํˆด๋Ÿฌ์„œ ์šฐ์„  BFS๋กœ ํ’€์–ด๋ณด์•˜๋‹ค. ๋‚˜์ค‘์— DP๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด DP๋กœ ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค.

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Study Repository

rlaehddnd0422

ํ™œ๋™ํ•˜๊ธฐ