Coding Test/HackerRank

HackerRank 문제풀이 - 6 (Left Rotation)

범데이 2022. 12. 17. 01:47

1.문제

  • 임의의 배열(a)과 배열의 요소들이 왼쪽으로 얼만큼 쉬프트할지 숫자(d)가 정해진다.
    • 가장 낮은 인덱스의 아이템은 가장 높은 인덱스로 이동하게 된다.
  • 쉬프트가 끝난 배열을 리턴으로 넘기면 된다.

 

 

2. 풀이

2.1 풀이 과정

function rotLeft(a, d) {
    // Write your code here
    let tempArr = [];
    for(let i = d; i < a.length; i++){
        tempArr.push(a[i]);
    }
    
    for(let i = 0; i < d; i++){
        tempArr.push(a[i]);
    }
    
    return tempArr;
}

풀이 방법은 다음과 같다.

  • 주어진 배열(a)에서 쉬프트값(d)부터 배열의 길이까지 빈 배열(tempArr)에 넣는다.
  • 그 후, 주어빈 배열(a)의 가장 낮은 인덱스부터 쉬프트값(d)까지의 요소들을 배열(tempArr)에 넣는다.

 

2.2 풀이 결과

이렇게 모든 테스트케이스를 통과하였다.

 

사실, 어제 퇴근 후 심야 시간대에 이 문제를 풀었을 때에 정말 어렵게 풀려고 했었다.

 

for문 안에 분기문을 주어서 이터레이션 인덱스(i)값에서 쉬프트수치(d)를 뺀다음에 그게 0보다 적은지, 적다면 어떤 값을 넣고 많다면 다른 값을 넣는 등 이상하게 풀려다가 더 머리가 꼬여서 늦은 시간대라 다음에 풀기로 포기했었다.

 

근데, 그 다음날에 다시 문제를 보니 전혀 어렵게 풀지 않아도 되는 문제였다.

아무리 같은 몸(?)이라도 컨디션에 따라서 문제를 그때그때 다르게 풀어간다는 것이 신기하다.

비록 개발자가 육체적 중노동을 하지 않는다 해도, 뇌가 총명하려면 좋은 컨디션을 유지해야한다는게 실감이 났다..ㅋㅋ

반응형