[BOJ] 16928. 뱀과 사다리 게임 - c++

ha·2022년 1월 21일
0

BOJ

목록 보기
3/28

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

100칸에 도착하기 위해 주사위를 굴려야 하는 횟수의 최솟값
=>(queue)사용 BFS

C++풀이

int mve[102] = 뱀/사다리로 이동하는 구간 정보 저장(기본값으로 해당 위치)

int N,M;
int mve[102];
int visited[102];

int main()
{
  cin>>N>>M;
  for(int i=1;i<101;i++){
      mve[i]=i;
      visited[i]=-1;
  }
  for(int i=0;i<N+M;i++){
      int x,y;
      cin>>x>>y;
      mve[x]=y;
  }
  
  queue<int> q;
  q.push(1);
  visited[1]=0;
  while(!q.empty()){
      int cur = q.front();
      q.pop();
      for(int i=1;i<=6;i++){
          int nxt = cur +i;
          if(nxt>100) continue;
          nxt= mve[nxt];//사다리 or 뱀 이동 
          
          if(visited[nxt]==-1){//방문한적 없는 경우 
              visited[nxt] = visited[cur]+1;
              q.push(nxt);
          }
      }
  }
  cout<<visited[100];
      
}

0개의 댓글