코딩테스트(JavaScript) 프로그래머스 : 자연수 뒤집어 배열로 만들기

Parkboss·2022년 9월 16일
0

코딩테스트

목록 보기
13/19

✅문제

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

❕ 제한사항

n은 10,000,000,000이하인 자연수입니다.

📢 입출력 예제


💻 다른 사람 풀이

function solution(n) {
    var answer = [];
    let arr = String(n);
    
    for(let i= arr.length-1; i >= 0; i--){
        answer.push(parseInt(arr[i]));
    }
    return answer;
}

정말 동작 원리를 이해할 수 있는 아주 좋은 풀이인듯하다.
나의 문제점은 인덱스를 활용을 못한다는 것이다.

  • String(n)으로 문자열로 바꿔서 arr 변수에 저장한다.
  • arr.length 1 하는 부분이 정말 내가 생각지도 못한 부분이다. 여기서 인덱스를 활용해서 뒤집기는 하는 부분이다.
  • arr.length 1 = 4이다. 4 >= 0이기 때문에 아래 구문으로 내려간다.
  • arr[4]은 5이다. 그래서 문자열 5를 숫자 5로 바꾸어 answer.push 해준다.
  • 이런 식으로 쭉쭉 해보면 결국 리턴 값인 [5,4,3,2,1]이 나온다.

인덱스는 길이의 -1을 한다

💻 다른 사람 풀이 2

function solution(n) {
  return n.toString().split('').reverse().map((num)=> parseInt(num))
}

이 방법은 고차 함수만 잘 생각해서 쓰면 금방 풀 수 있는 문제이다.
풀이를 하다 보니 이 방법이 더 쉽고 금방 이해가 간다

  • 무조건 숫자를 문자열로 바꾸나 보다? 왜지? 대체? 그 ''를 위한 것인가?
  • reverse 함수를 사용해서 숫자를 뒤집어 준다.
  • map 함수는 배열의 아이템들을 각각 다른 아이템으로 매핑할 수 있는, 변환해서 새로운 배열 생성해 준다.
  • 그래서 (5,4,3,2,1) 문자열을 map의 고차 함수를 사용하여 순회를 돌면서 parseInt 숫자로 변환해 새로운 배열을 생성해 준다.

맞추진 않았지만 다른 사람 풀이하고 정리하면서 처음으로 코테가 재밌다!!

profile
ur gonna figure it out. just like always have.

0개의 댓글