728x90
1. 문제
- 구름의 값(0, 1)이 들어있는 무작위 배열이 주어진다.
- 0은 밟을수 있는 구름이고, 1은 밟을 수 없는 구름이다.
- 첫번째 구름과 마지막 구름은 무조건 밟을수 있는 구름이다.
- 점프를 한 칸이나 두 칸을 할 수있다.
- 마지막 구름까지 최소 몇번의 점프를 해야 도달할 수 있는지 구하면 된다.
2. 풀이
2.1 풀이 과정
function jumpingOnClouds(c) {
// Write your code here
// const tokens = c.split("\n");
// const size = tokens[0];
// const list = tokens[1].split(",");
// const list = c.split(",");
const list = c;
let currentIndex = 0;
let jumps = 0;
do {
if (currentIndex + 2 < list.length && list[currentIndex + 2] == "0") {
currentIndex += 2;
jumps++;
} else if (currentIndex + 1 < list.length && list[currentIndex + 1] == "0") {
currentIndex += 1;
jumps++;
} else {
break;
}
} while (currentIndex < list.length);
return jumps;
}
주어진 값이 무언가가 잘못된 듯 하다.
배열의 길이와 배열의 값이 띄어쓰기("\n")로 구분되어 입력으로 주어진다고 했는데,
배열의 값만 주어지는 듯 했다. 그래서 HackerRank에서 작성해준 코드는 주석처리 하였다.
풀이 과정은 다음과 같이 간단했는다.
- 현재 밟고있는 인덱스를 변수(currentIndex)로 정의한다.
- 몇번의 점프를 했는지를 변수(jumps)로 정의한다.
- 주어진 list의 길이만큼 반복문을 돈다.
- 만약 현재인덱스(currentIndex)보다 2가 큰 값만큼 list가 존재하고, 해당 값이 0이라면
- 현재인덱스(currentIndex)를 2 증가시키고, 점프수(jumps)를 1 증가시킨다.
- 아니라면, 만약 현재인덱스(currentIndex)보다 1가 큰 값만큼 list가 존재하고, 해당 값이 0이라면
- 현재인덱스(currentIndex)를 1 증가시키고, 점프수(jumps)를 1 증가시킨다.
- 만약 현재인덱스(currentIndex)보다 2가 큰 값만큼 list가 존재하고, 해당 값이 0이라면
두칸 뒤의 구름이 밟을수 있는 구름이라면, 한 칸 뒤 구름이 밟을수 있는지 없는지 검사할 필요 없이 2칸 점프를 하면 되기 때문에 풀이가 심플했던 것 같다.
2.2 풀이 결과
심플한 문제였기에 비교적 짧은 시간 안에 풀이를 통과하였다.
반응형
'Coding Test > HackerRank' 카테고리의 다른 글
HackerRank 문제풀이 - 6 (Left Rotation) (0) | 2022.12.17 |
---|---|
HackerRank 문제풀이 - 5 (2D Array - DS) (3) | 2022.12.05 |
HackerRank 문제풀이 - 3 (Repeated String) (0) | 2022.06.04 |
HackerRank 문제풀이 - 2 (Counting Valleys) (0) | 2022.02.13 |
HackerRank 문제풀이 - 1 (Socks Merchant) (0) | 2022.02.02 |