[코딜리티] codility lesson4 Counting Elements - FrogRioverOne 100%
문제.
설명.
영어로된 문제 설명을 잘 이해하지 못했었다.
그래서 한글로 다시 바꾸어 써봄.
1. 배열 0~7 은 강을건너 가는 징검다리이다.
2. 각각의 징검다리는 생성되는 시간이 적혀있다. A[K] = 3 | 징검다리[K번째] = 3초후 생성
3. X번째 징검다리 까지 모두 생성되는 가장 짧은 소요시간은?
내가 자주 써먹는 단순 카드 뽑기 알고리즘 으로 해결.
Programming language:
A small frog wants to get to the other side of a river. The frog is initially located on one bank of the river (position 0) and wants to get to the opposite bank (position X+1). Leaves fall from a tree onto the surface of the river.
You are given a zero-indexed array A consisting of N integers representing the falling leaves. A[K] represents the position where one leaf falls at time K, measured in seconds.
The goal is to find the earliest time when the frog can jump to the other side of the river. The frog can cross only when leaves appear at every position across the river from 1 to X (that is, we want to find the earliest moment when all the positions from 1 to X are covered by leaves). You may assume that the speed of the current in the river is negligibly small, i.e. the leaves do not change their positions once they fall in the river.
For example, you are given integer X = 5 and array A such that:
A[0] = 1
A[1] = 3
A[2] = 1
A[3] = 4
A[4] = 2
A[5] = 3
A[6] = 5
A[7] = 4
In second 6, a leaf falls into position 5. This is the earliest time when leaves appear in every position across the river.
Write a function:
int solution(int X, int A[], int N);
that, given a non-empty zero-indexed array A consisting of N integers and integer X, returns the earliest time when the frog can jump to the other side of the river.
If the frog is never able to jump to the other side of the river, the function should return −1.
For example, given X = 5 and array A such that:
A[0] = 1
A[1] = 3
A[2] = 1
A[3] = 4
A[4] = 2
A[5] = 3
A[6] = 5
A[7] = 4
the function should return 6, as explained above.
Assume that:
- N and X are integers within the range [1..100,000];
- each element of array A is an integer within the range [1..X].
Complexity:
- expected worst-case time complexity is O(N);
- expected worst-case space complexity is O(X), beyond input storage (not counting the storage required for input arguments).
Elements of input arrays can be modified.
Copyright 2009–2017 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
풀이.
설명.
영어로된 문제 설명을 잘 이해하지 못했었다.
그래서 한글로 다시 바꾸어 써봄.
1. 배열 0~7 은 강을건너 가는 징검다리이다.
2. 각각의 징검다리는 생성되는 시간이 적혀있다. A[K] = 3 | 징검다리[K번째] = 3초후 생성
3. X번째 징검다리 까지 모두 생성되는 가장 짧은 소요시간은?
내가 자주 써먹는 단순 카드 뽑기 알고리즘 으로 해결.
그보다 내가 처음 이해했던 문제는 이랬다..
X번째 타일까지 이동하는 데 소요되는 시간을 구하라. 각 타일은 일정시간 간격으로 나타난다.
아... 그러고 보니 이게 훨씬 어려운데.. 잘만들었는데.. 지워 버림 ㅡㅠㅡ
영어가 부족하기도하고, 꼼꼼히 읽었어야 하는데 대충 이해하고 넘어가기도 했고.
댓글
댓글 쓰기