-
[Algorithm] 16928 뱀과 사다리 게임 - C++, BFS쾌락없는 책임 (공부)/알고리즘 문제풀이 2022. 5. 5. 16:03반응형
#include <iostream> #include <queue> using namespace std; int ladder, snake; int nextMap[200]; bool visit[101]; void MakeRoute(){ int from, to; cin >> from >> to; nextMap[from] = to; } int main(){ // init ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); for(int i = 1; i <= 100; i++){ nextMap[i] = i; } // input cin >> ladder >> snake; while(ladder--){ MakeRoute(); } while(snake--){ MakeRoute(); } // solution queue<pair<int, int>> dice; // pos, count dice.push({1, 0}); visit[1] = true; while (!dice.empty()){ int curPos = dice.front().first; int count = dice.front().second; dice.pop(); if(curPos == 100){ cout << count << '\n'; return 0; } for(int i = 1; i <= 6; i++){ int nextPos = curPos+i; if(nextPos > 100) continue; nextPos = nextMap[curPos+i]; if(visit[nextPos]) continue; visit[nextPos] = true; dice.push({nextPos, count+1}); } } }
nextMap 이란 배열을 선언해 이 배열을 '인덱스에 도달했을때 연결된 다음 지점'에 대한 정보로 사용했습니다. 사다리나 뱀이 없는 곳이라면 그냥 인덱스가 이 배열값이 되는 것이고 아닌 경우에는 견결된 곳으로 이동하게 만들어 주면 되는 것입니다.
반응형'쾌락없는 책임 (공부) > 알고리즘 문제풀이' 카테고리의 다른 글
[Algorithm] 백준 2696 중앙값 구하기 : C++, 힙, 재채점 수정 (0) 2022.05.10 [Algorithm] 백준 18405 경쟁적 전염 - C++ (0) 2022.05.07 [Algorithm] 프로그래머스 합승 택시 요금 - C++, 플로이드 와샬 (0) 2022.05.03 [Algorithm] 백준 2589 보물섬 - C++, BFS (0) 2022.04.25 [Algorithm] 백준 1504 특정한 최단 경로 - C++, 다익스트라 (0) 2022.04.18