ABOUT ME

-

오늘 방문자
-
어제 방문자
-
전체
-
  • [Codility] FrogRiverOne 27→100
    알고리즘 2019. 5. 6. 20:56


    문제출처

     https://app.codility.com/programmers/lessons/4-counting_elements/frog_river_one/


    문제요약

     개구리가 나뭇잎을 밣고목표지점까지 건너가야한다.

     나뭇잎은 매초마다 여러위치에 랜덤으로 떨어진다.

     주어진 배열의 인덱스는 '초'를 의미하며, 요소값은 나뭇잎이이 떨어 지는 위치를 의미한다.

     나뭇잎이 목표지점까지 모두 떨어져 있어야 건너갈 수있다. 건너 갈수 없다면 -1 리턴.

     목표지점이 10이라면 11까지 가야된다.



    코드

    [27점] 오답+성능X

    https://app.codility.com/demo/results/trainingGYCN5H-D7P/

    이번문제는 문제를 이해하는대 오래걸렸다.. 같은 스터디 조원한분이 잘 설명해주서어 쉽게 풀수 있었다.

    여러개의 나뭇잎이 떨어지는 건 상관 없고, 그위치에만 떨어지면 되기 때문에 중복이 허용되지않는 set으로 시작하였다.

    10행은 예외처리를 한 코드이다, 예외처리외에는 시간값을 증가시켰는대.. 너무 무책임하게 짠거 같더니만 역시나 오답 ㅎ



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    class Solution {
        public int solution(int X, int[] A) {
            int time = 0;
     
            HashSet<Integer> distance = new HashSet<>();
     
            for(int i : A) distance.add(i);
     
            for(int j=1 ; j<=distance.size();j++){
                if(X==&& distance.size()==1return 0//예외처리 case : 1, [1]
     
                if(!distance.contains(j) || !distance.contains(X) ){
                    return -1//건널수 없다면
                }else{
                    time ++;
                }
            }
     
            return time + 1// 목표지점 +1 
        }
    }
    cs



    [100점]

    https://app.codility.com/demo/results/training8QWNJF-299/


    이번에는 목표지점을 넘어서의 값은 필요없기 때문에  6행을 통해서 값을 담았다.

    그리고 10행의 조건문을 통해 목표지점까지 걸리는 시간값을 출력했다.

    만약에 10행에 해당하는 조건이 없다면 각 위치간에 나뭇잎이 없는 곳이 있다는 의미이고

    마지막에 return -1을 해버렸다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class Solution {
        public int solution(int X, int[] A) {
            HashSet<Integer> distance = new HashSet<>();
     
            for (int i=0 ; i<A.length;i++) {
                if (A[i] <= X) {
                    distance.add(A[i]);
                }
     
                if (distance.size() == X) {
                    return i;
                }
     
            }
     
            return -1;
        }
    }
    cs


    '알고리즘' 카테고리의 다른 글

    [Codility] PassingCars 70→100  (0) 2019.05.06
    [Codility]MaxCounters  (1) 2019.05.06
    [Codility] PermCheck 100점  (0) 2019.05.06
    [Codility] TapeEquilibrium 100점  (1) 2019.03.31
    [Codility] PermMissingElem 30→80→100  (0) 2019.03.31

    댓글

Designed by Tistory.