A non-empty array A consisting of N integers is given.
A permutation is a sequence containing each element from 1 to N once, and only once.
For example, array A such that:
A[0] = 4 A[1] = 1 A[2] = 3 A[3] = 2
is a permutation, but array A such that:
A[0] = 4 A[1] = 1 A[2] = 3
is not a permutation, because value 2 is missing.
The goal is to check whether array A is a permutation.
Write a function:
function solution(A);
that, given an array A, returns 1 if array A is a permutation and 0 if it is not.
For example, given array A such that:
A[0] = 4 A[1] = 1 A[2] = 3 A[3] = 2
the function should return 1.
Given array A such that:
A[0] = 4 A[1] = 1 A[2] = 3
the function should return 0.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [1..100,000];
- each element of array A is an integer within the range [1..1,000,000,000].
문제 이해 & 분석 :
1. 값이 중복되는것이 없다면 1
2. 값이 중복되는 값 또는 배열의 크기보다 값이 크다면 0
3. 배열은 비어있는것은 없다. ( 배열의 length가 0일 경우 -> 예외처리 안해되 됨 )
4. Integer(정수)로만 되어져 있다.
생각 보다 심플하게 문제를 내주었다,
function solution(A) {
const found = new Set(); // set을 사용하기 위해
for (const num of A) {
// 중복값이나 배열수보다 크면 0
if (found.has(num) || num > A.length) { return 0 }
found.add(num);
}
return 1;
}
'IT > Algorithm' 카테고리의 다른 글
코딜리티(Codility) Lesson5 GenomicRangeQuery 문제풀기 (0) | 2021.06.02 |
---|---|
코딜리티(Codility) Lesson4 CountDiv 문제풀기 (0) | 2021.05.27 |
코딜리티(Codility) Lesson4 MaxCounters (0) | 2021.03.24 |
코딜리티(Codility) Lesson3 TapeEquilibrium 문제풀기 (0) | 2021.03.04 |
코딜리티(Codility) Lesson3 PermMissingElem 문제풀기 (0) | 2021.03.02 |