본문 바로가기
Algorithm

JAVA / Codility Lesson 4 / FrogRiverOne

by with chu 2021. 5. 11.
728x90

코딜리티 코딩테스트 레슨4


FrogRiverOne coding task - Learn to Code - Codility

 

FrogRiverOne coding task - Learn to Code - Codility

Find the earliest time when a frog can jump to the other side of a river.

app.codility.com

 


<문제 요약>

개구리가 낙엽에 올라타 강 건너편으로 건너가려고 한다.
출발지 : position 0,  도착지 : position X+1 
배열A는 1초에 강 표면에 떨어지는 낙엽의 위치이다.
낙엽이 모든위치에 나타나는 최단시간을 반환하는 함수를 작성한다.
만약 점프할 수 없다면 -1을 반환한다.

ex)  X = 5, A = { 1, 3, 1, 4, 2, 3, 5, 4 } 에서
5까지 모두 나타나는 시간은 6초이므로 6을 반환

 

 

<문제 풀이>

1. 점프할 수 없는 경우인 -1로 second 변수를 선언한다.
2. 낙엽 HashMap을 만들어준다.
3. for문을 돌면서 배열A의 마지막 값부터 낙엽 HashMap에 넣어준다. 
4. 낙엽 HashMap의 크기가 X이면 그 안의 값중 가장 큰 값이 낙엽이 모든위치에 나타나는 최단시간이다.

import java.util.*;

class Solution {
    public int solution(int X, int[] A) {
        int second = -1;
        Map<Integer, Integer> leaves = new HashMap<>();

        for (int i = A.length - 1; i >= 0 ; i--){
            leaves.put(A[i] - 1, i);
        }
        if (leaves.size() == X){
            second = Collections.max(leaves.values());
        }
        return second;
    }
}

 

728x90

댓글