[Codility Lessons] Cyclic Rotation

Strawberry Oolong Tea·2022년 5월 22일
0

TODAY I LEARNED

목록 보기
45/51
post-thumbnail

주어진 숫자 배열 A를 K번만큼 요소의 인덱스를 한 칸씩 이동한 배열을 리턴하는 함수를 작성하는 문제입니다. 배열의 마지막 요소는 맨 앞으로 이동합니다.

// 배열 메서드 pop()과 unshift()를 사용하여
// K번만큼 맨 뒤 요소를 맨 앞으로 이동시킵니다.
function solution(A, K) {
  for (let i = 0; i < K; i++) {
    const poped = A.pop();
    A.unshift(poped);
  }
  return A;
}

채점 결과 빈 배열이 주어졌을 때의 예외 처리를 하지 않아 런타임 에러가 발생했습니다.
(input([], 0)일 경우)

function solution(A, K) {
  // A가 빈 배열이 아니고 K가 0이 아닌 경우에만 for 문을 실행하고
  // 그 외의 경우는 A를 그대로 리턴합니다.
  if (A.length !== 0 && K !== 0) {
    for (let i = 0; i < K; i++) {
      const poped = A.pop();
      A.unshift(poped);
    }
  }
  return A;
}

문제를 이해하기 위해서 테스트 케이스를 바탕으로 생각하고 코드를 작성했는데,
항상 예외가 있다는 걸 염두에 두어야 한다는 것을 깨달았습니다.

profile
Der Vogel kämpft sich aus dem Ei 🥚🐣 목표를 위해 끊임없이 자신의 세계를 깨뜨릴 수 있는 용감한 개발자가 되고 싶습니다.

0개의 댓글