No Rules Rules

맥주 마시면서 걸어가기 (feat. 백준, 9205번) 본문

생활/코테

맥주 마시면서 걸어가기 (feat. 백준, 9205번)

개발하는 완두콩 2022. 9. 14. 13:13
728x90
반응형

맥주 마시면서 걸어가기
https://www.acmicpc.net/problem/9205

 

9205번: 맥주 마시면서 걸어가기

송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다.

www.acmicpc.net

 

반응형

 

// woohyeon.kim
// kim519620.tistory.com
#include <iostream>
#include <string.h>
#include <queue>
#include <algorithm>
using namespace std;
int T, N, ex, ey;
pair<int, int> arr[101];
bool visit[101];
bool bfs(register int x, register int y){
    memset(visit, false, sizeof(visit));
    queue<pair<int, int>> q;
    q.push(make_pair(x, y));
    while(!q.empty()){
        auto p = q.front(); q.pop();
        x = p.first, y = p.second;
        if(abs(x - ex) + abs(y - ey) <= 1000)
            return true;
        for(register int n = 0; n < N; ++n){
            auto tmp = arr[n];
            if(!visit[n] && (abs(x - tmp.first) + abs(y - tmp.second) <= 1000))
                visit[n] = true, q.push(make_pair(tmp.first, tmp.second));
        }
    }
    return false;
}
int main(){
    ios::sync_with_stdio(false), cin.tie(NULL);
    cin >> T;
    for(register int t = 0, x, y; t < T; ++t){
        cin >> N >> x >> y;
        for(register int n = 0; n < N; ++n)
            cin >> arr[n].first >> arr[n].second;
        cin >> ex >> ey;
        if(bfs(x, y))
            cout << "happy\n";
        else
            cout << "sad\n";
    }
    return 0;
}
// *&)*@*

 

 

  1. 시작점으로부터 1000미터만큼 움직일 수 있다는 제약이 있습니다. (편의점 또는 도착점에 들리기까지)
  2. 따라서 시작점으로부터 모든 편의점에 대해 bfs 탐색을 진행합니다. 1000미터보다 가까운 편의점이 있다면 해당 편의점 인덱스에 마킹을 하고 queue에 삽입하여 다음 bfs의 아이템으로 소비합니다.
  3. 2번을 진행하며 queue에서 가져온 좌표 (x,y)와 도착점 (sx,sy)간의 거리가 1000미터 이하라면 "happy"를 출력하여 종료하고, 모든 너비 우선 탐색이 끝날때까지 종료되지 않았다면 "sad"를 출력하여 종료합니다.

 

 

728x90
반응형

'생활 > 코테' 카테고리의 다른 글

큐 (feat. 백준, 10845번)  (0) 2022.09.14
재귀의 귀재 (feat. 백준, 25501번)  (0) 2022.09.14
빙산 (feat. 백준, 2573번)  (0) 2022.09.14
안전 영역 (feat. 백준, 2468번)  (0) 2022.09.14
스타트링크 (feat. 백준, 5014번)  (0) 2022.09.14
Comments