알고리즘/Codility
[Codility] PermCheck (JavaScript)
devpine
2025. 6. 14. 12:51
반응형
https://app.codility.com/programmers/lessons/4-counting_elements/perm_check/
PermCheck coding task - Learn to Code - Codility
Check whether array A is a permutation.
app.codility.com
문제 요구사항:
배열이 순열이라면 1, 아니라면 0을 리턴한다.
내 풀이:
function solution(A) {
let result = 1;
A.sort(); // 정렬
for (let i = 0; i < A.length; i++) {
if (A[i] !== i + 1) result = 0; // 현재 배열의 값과 인덱스 + 1한 값이 다르다면 0 반환
}
return result;
}
- 채점 결과: 75%
분석:
Correctness tests:
- permutations_of_ranges: permutations of sets like [2..100] for which the anwsers should be false
Performance tests
- large_range: sequence 1, 2, ..., N, N = ~100,000
- various_permutations: all sequences are permutations
원인:
- JS sort 함수는 원소를 문자열로 만들고 UTF-16 코드 유닛 값을 기준으로 순서를 정렬한다. 따라서 숫자 정렬을 하기 위해서 sort() 할 때 (a , b) => a - b 로 숫자로 형변환을 해주어야 한다.
수정한 풀이:
function solution(A) {
const sortedA = A.sort((a, b) => a - b); // 정렬
for (let i = 0; i < sortedA.length; i++) {
if (sortedA[i] !== i + 1) return 0; // 현재 배열의 값과 인덱스 + 1한 값이 다르다면 0 반환
}
return 1;
}
- 채점 결과: 100%
반응형