• Codility lesson4_1 - FrogRiverOne

    2021. 8. 20.

    by. 내이름은 킹햄찌

    요약

    개구리가 강 건너편으로 이동을 하려하는데 이동해야하는 거리는 X이고 낙엽이 떨어지는 곳을 나타낸 벡터 A이다.

    벡터 A에는 1초마다 낙엽이 떨어지는 곳을 나타낸다. X까지 낙엽이 모두 있어야 개구리가 건널 수 있다. X와 벡터 A와 정수 X를 input으로 받아서 몇초만에 목표지점에 도착하는지 정수로 output해야한다. 도달할 수 없는 경우 -1

    예를 들어 

    X = 5

    A[0] = 1      개구리 -> oxxxx 강건너편

    A[1] = 3                    oxoxx

    A[2] = 1                    oxoxx

    A[3] = 4                    oxoox

    A[4] = 2                     oooox

    A[5] = 3                    oooox

    A[6] = 5                    ooooo

    A[7] = 4                    ooooo

    라고하면 6초만에 강 건너편으로 도달 할 수 있게 된다.

     

    아이디어

    A벡터에서 다른 공간으로 낙엽이 떨어지는 공간을 중복없이 넘겨주어서 X와 크기가 같아지는 시점이 개구리가 강건너편으로 이동할 수 있는 시간으로 판단

     

    코드

    #include<unodered_set>
    int solution(int X, vector<int> &A) {
    	// write your code in C++14 (g++ 6.2.0)
    	unordered_set<int> leaf;
    	unordered_set<int>::iterator it;
    	int cnt = 0;
    	for (auto element : A)
    	{
    		
    		it = leaf.find(element);
    		if (it == leaf.end())
    			leaf.insert(element);
    
    		if (leaf.size() == X)
    			return cnt;
    
    		cnt++;
    	}
    	return -1;
    }

     

    결과는

     

    unodered_set을 이전문제에서도 사용했었는데 관련 함수사용해볼겸 한번 더 사용했습니다. unodered_set을 이용하여 공간의 크기가 목표 지점과 같으면 cnt를 리턴하고 끝까지 도달 못할 시 -1반환하도록 작성했습니다.

    어렵지 않다.

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

    Codility lesson4_3 - MissingInteger  (0) 2021.08.21
    Codility lesson4_2 - MaxCounters  (0) 2021.08.21
    Codility lesson3_3 - TapeEquilibrium  (0) 2021.08.15
    Codility lesson3_2 - PermMissingElem  (0) 2021.08.15
    Codility lesson3_1 - FrogJmp  (0) 2021.08.15

    댓글