11060번 - 점프 점프
각 index에서 점프 할 수 있는 거리 중 가장 멀리 점프 할 수 있는 것을 골랐습니다.
예를 들어,
5
2 1 5 4 2 이고 index가 1부터 시작한다면
index 1 에는 2가 있으므로, index 2와 3까지 갈 수 있는데,
index + arr[index] 의 값이 가장 큰 값 (즉, 다음 장소에서 가장 멀리 까지 갈 수 있는 곳을 선택)
해서 index 3을 선택하는 방식으로 구현하였는데, 틀렸다고 뜨네요...
가능한 한 멀리 뛰는 것이 최적이 아닙니다.
제 코드에서 23번 라인에 등호를 추가해주니 맞았습니다.
@jh05013님 답변 감사합니다.
다만 제가 짠 코드는 현재 자리에서 가장 멀리 뛰는 것이 아닌, 현재 자리에서 뛸 수 있는 후보군 중에 가장 멀리 뛰는 것을 선택한다는 의미였습니다.
즉 2 3 1 1 0 이고, index가 1부터 시작한다면
index 1번부터 시작해서 2번 ,3번까지 갈 수 있고,
여기서 가장 멀리 뛸 수 있는 것은 2번이므로 index 2를 선택해 나간다는 의미였습니다.
앗 그렇군요. 그 방법은 맞는 것 같습니다.
1 1 2 9 1 ...
이런식으로 따지면 2에서 1로 뛰는게 가장 멀리 뛰는 건데 9로 뛰는게 최종적으로 가장 높지않을까요 ㅇㅅㅇ.. 그리디는 안되는 것 같고 dp이용해서 풀어야 하는 것 같습니다.
그럴거면 왜 bfs에 카테고리했는지 -ㅅ-. 시간만 괜히 날렸네요.
bfs로도 풀 수 있습니다.
댓글을 작성하려면 로그인해야 합니다.
d252b 6년 전
각 index에서 점프 할 수 있는 거리 중 가장 멀리 점프 할 수 있는 것을 골랐습니다.
예를 들어,
5
2 1 5 4 2 이고 index가 1부터 시작한다면
index 1 에는 2가 있으므로, index 2와 3까지 갈 수 있는데,
index + arr[index] 의 값이 가장 큰 값 (즉, 다음 장소에서 가장 멀리 까지 갈 수 있는 곳을 선택)
해서 index 3을 선택하는 방식으로 구현하였는데, 틀렸다고 뜨네요...