티스토리 뷰

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요.
예를 들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
function solution(n) {
    var answer = String(n).split('').reverse()

    return answer.map(Number)
}

 

풀이

 

매개변수를 문자로 변환한 뒤 split() 메서드를 활용해서 하나씩 쪼개 배열로 변환해 준다 (괄호 안에 따옴표만 넣으면 문자를 하나씩 ' ' 으로 감싸 새 배열로 반환된다)

 

배열을 뒤집기 위해 reverse() 메서드를 활용했다

 

마지막으로 return 값을 숫자로 변환하면 끝인데

return Number(answer)으로 변환을 시도했으나 배열이라 변환이 안 되는 게 문제였다

 

찾아보니 map과 Number를 같이 사용해서 배열을 숫자로 변환할 수 있다는 걸 알아냈다 이게 왜 가능한 걸까?

 

map 메서드는 배열의 각 요소에 대해 주어진 함수를 호출하고 새로운 배열로 반환한다

결론은 map을 이용해서 새 배열로 반환할 건데 Number함수를 호출해 요소를 숫자로 변환한 뒤 배열로 반환하게 되는 것

 


이전 풀이
function solution(n) {
  var answer = []; // 배열을 담을 그릇
  var num = n.toString(); // 매개변수를 문자로 변환

  for (let i = num.length - 1; i >= 0; i--) {
    // 매개변수를 뒤집어서 순차적으로 배열에 넣기위한 반복
    answer.push(Number(num[i])); // 배열에 숫자 저장
  }
  return answer;
}

 

빈 배열을 선언하고  인자를 문자로 변환해 변수에 할당해 준다

 

반복문의 조건이 포인트

 

문자 길이 -1 로 할 경우 뒤에서부터 시작한다 i가 0 이 될 때까지,  i-- 는 하나씩 빼는 것

결국 문자 길이가 0 이 될 때까지 뒤에서부터 하나씩 뺀다는 조건이다

 

그리고 빈 배열에 문자를 하나씩 숫자로 변환해 push 하면 끝

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함