자연수 뒤집어 배열로 만들기 | 프로그래머스

Wonkook Lee·2021년 7월 27일
0

JS Coding Test | Level 1

목록 보기
13/20
post-thumbnail

문제 풀러 가기

자연수 뒤집어 배열로 만들기 (Lv.1)


문제

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

제한 사항

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

입출력 예

nreturn
12345[5,4,3,2,1]

나의 풀이

올바른 풀이

function solution(num) {
  return (num + '').split('').reverse().map(e => parseInt(e));
}

console.log(solution(12345));
// [5, 4, 3, 2, 1]
console.log(solution(846984156));
// [6, 5, 1, 4, 8, 9, 6, 4, 8]
console.log(solution(684616846467248));
// [8, 4, 2, 7, 6, 4, 6, 4, 8, 6, 1, 6, 4, 8, 6]

로그 예시가 극단적이긴 하지만, 항상 코드를 짤땐 극단적인 인풋까지 염두하고 빌드해야한다고 들었다. 문자열을 분리하고, 뒤집어서 숫자로 다시 맵핑하는 쉬운 예제이지만, 문제를 잘 안읽고 멋대로 썼다가 정답률 7% 먹고 헤매였다. (+5점)

잘못된 풀이

function solution(num) {
  return (num + '').split('').sort().reverse().map(e => parseInt(e));
}

문자열을 뒤집으라고 했지 내림차순으로 만들라곤 안했는데..

function solution(num) {
  const result = (num + '').split('').sort().reverse().map(e => parseInt(e));
  const setResult = new Set(result);
  return [...setResult];
}

문제를 제대로 안읽고 중복된 값을 제거해야하나 싶어서 Set으로 만들어도 보았다. 차근차근 문제를 읽는 독해 능력이 문제를 푸는 것만큼 중요하다는 것을 다시 한번 깨닫는 순간


다른 사람의 풀이

function solution(n) {

  	// 숫자풀이
    var arr = [];

    do {
        arr.push(n%10);
        n = Math.floor(n/10);
    } while (n>0);

    return arr;
}

?? 세상에 이렇게 풀수도 있구나
12345 % 10 = 5
1234 % 10 = 4
123 % 10 = 3
12 % = 2
1 % = 1
정말 기발하고 언젠가 써먹을 데가 있을 것 같아 킵핑
다른 답변은 내 풀이와 비슷해서 생략

profile
© 가치 지향 프론트엔드 개발자

0개의 댓글