https://www.acmicpc.net/problem/5566
문제에 주어진대로 코딩하면 되는 문제였다. 주사위를 굴렸을 때 내가 원하는 도착점보다 멀리 갔거나 주사위를 굴린 후 도착한 곳에 명령을 따라 도착한 곳이 도착점보다 멀리 갔으면 탈출하고 총 몇번만에 수행하였는지 출력한다.
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> mat; //땅에 적힌 명령
vector<int> dice; //던져서 나온 주사위의 눈
int n, m; //n위치에 도달, m번 던짐
int num; //임시변수
int start = 1; //시작하는 곳
int cnt = 0; //명령 수행 횟수
cin >> n >> m;
//땅에 적힌 명령 입력
for (int i = 0; i < n; i++) {
cin >> num;
mat.push_back(num);
}
//던져서 나온 주사위의 눈 입력
for (int i = 0; i < m; i++) {
cin >> num;
dice.push_back(num);
}
//명령 수행, 주사위를 던진 횟수만큼 반복
for (int i = 0; i < m; i++) {
cnt++; //명령 횟수 증가
start = start + dice[i]; //주사위를 던지고 현재 위치 갱신
if (start >= n) { //n보다 멀리 갔으면
break; //탈출
}
start = start + mat[start - 1]; //도착한 곳에 명령을 따라 이동
if (start >= n) { //n보다 멀리 갔으면
break; //탈출
}
}
cout << cnt; //명령 수행 횟수 출력
}
'백준' 카테고리의 다른 글
백준1236 - 성 지키기 (0) | 2019.07.31 |
---|---|
백준1644 - 소수의 연속합 (0) | 2019.07.31 |
백준17214 - 다항 함수의 적분 (0) | 2019.07.30 |
백준4889 - 안정적인 문자열 (0) | 2019.07.30 |
백준1699 - 제곱수의 합 (0) | 2019.07.28 |