Lesson 4 (Counting Elements) - FrogRiverOne(Easy)
Test results - Codility
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 an array
app.codility.com
부끄러운 이야기지만 제 블로그니까 해봅니다.
처음에 영어로 된 문제 이해 못해서 18점 받았습니다.
이후 파파고 돌려서 문제를 이해하고 100점을 받았습니다...
X=4라면 1~4까지의 수열이 모두 적어도 한 번씩은 등장한 순간의 인덱스를 체크하면 되는 문제입니다.
function solution(X, A) {
const ch = new Array(X + 1).fill(0);
let cnt = 0;
for (i in A) {
if (ch[A[i]] === 0) {
ch[A[i]] = 1;
cnt++;
}
if (cnt === X) {
return Number.parseInt(i);
}
}
return -1;
}
간단한 문제지만 몇 가지 체크를 하고 갈 부분을 보자면...
- 수열을 체크하는 부분은 1부터 시작하므로 맞춰주기 위해 X+1 크기의 빈 배열을 만들었습니다.
- for in문은 원래 객체의 필드들을 탐색하는 구문이지만 자바스크립트에서 Array(배열)도 Object의 한 종류기 때문에 배열도 for in문을 사용 가능합니다.
const nums = [10, 20, 30];
const nums2 = {
"0": 10,
"1": 20,
"2": 30,
"length": 3
}
위 코드에서 nums는 사실 내부적으로 nums2와 동일한 형태라는 것입니다.
그래서 인덱스값인 i가 string으로 나온 것이고 제가 Number.parseInt() 메소드를 통해 숫자형으로 변환한 것을 확인하실 수 있겠습니다.
교훈: 영어도 중요하다
'IT > JavaScript & TypeScript' 카테고리의 다른 글
[JavaScript/알고리즘] PermCheck (0) | 2025.01.08 |
---|---|
[JavaScript/알고리즘] PassingCars (누적값 문제) (0) | 2025.01.08 |
[JavaScript/알고리즘] TapeEquilibrium (feat. 경계값 테스트) (0) | 2025.01.05 |
[JavaScript/알고리즘] PermMissingElem (0) | 2025.01.05 |
[JavaScript/알고리즘] FrogJmp (0) | 2025.01.05 |