728x90
코딜리티 코딩테스트 레슨4
FrogRiverOne coding task - Learn to Code - Codility
<문제 요약>
개구리가 낙엽에 올라타 강 건너편으로 건너가려고 한다.
출발지 : 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
'Algorithm' 카테고리의 다른 글
JAVA / Codility Lesson 4 / PermCheck (0) | 2021.05.12 |
---|---|
JAVA / Codility Lesson 3 / PermMissingElem (0) | 2021.05.07 |
JAVA / Codility Lesson 2 / Arrays (0) | 2021.04.23 |
JAVA / Codility Lesson 1 / BinaryGap (0) | 2021.04.20 |
C++ / 프로그래머스 / 네트워크 / 문제 풀이 (0) | 2021.04.14 |
댓글