티스토리 뷰


[ 해결 방법 ]

점프를 할 수 있는 범위에서 제일 큰 돌의 좌표를 고르면 된다. 예를 들어 4칸을 뛸 수 있고 현재 위치는 첫번재 돌에 있다. 그리고 돌이 1, 2, 5, 7.. 순으로 있다면, 점프해서 최대로 갈 수 있는 위치는 4이지만 4에 돌이 없으므로 가장 가까운 2로가야한다. 다음엔 2에서 6까지 뛸 수 있지만 6에 돌이 없으므로 가장 가까운 5로간다.


[ 코드 ]

#include <stdio.h>
#define INF 2000000000
int T, tmpT;
int pos[1000002];
int main()
{
scanf("%d", &T);
tmpT = T;
while (tmpT--)
{
int N, K;
int pre, cur = 0, next, jmp = 0;
scanf("%d", &N);
for (int i = 1; i <= N; i++)
scanf("%d", pos + i);
pos[N + 1] = INF;
scanf("%d", &K);
while (cur < N)
{
next = pos[cur] + K;
pre = cur;
while (pos[cur] <= next)
cur++;
cur--;
if (pre == cur)
{
jmp = -1; break;
}
jmp++;
//printf("pos[%d] = %d, jmp = %d\n", cur, pos[cur], jmp);
}
printf("Case #%d\n", T - tmpT);
printf("%d\n", jmp);
}
return 0;
}


'알고리즘 > 기초구현' 카테고리의 다른 글

백준_01타일  (0) 2016.09.08
백준_방번호  (0) 2016.09.08
codeground 프로그래밍 경진대회  (0) 2016.08.24
codeground 미궁속의 방  (1) 2016.08.24
KOI초등 벨트  (0) 2016.07.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함