[javascript #8] 자연수 뒤집어 배열로 만들기

in #kr-series7 years ago (edited)

안녕하세요 오늘은 서울이 1994년 이후로 최고 온도를 찍은 날입니다..그래서 지금 진짜 녹아내리고 있네요 ㅠㅠ 어디 나가기도 귀찮지만 집은 덥고 참 이러지도 저러지도 못하는 하루였습니다..(결국 집돌이..)

오늘은 오랜만에 온 javascript 8일차 입니다~ 이렇게 포스팅을 하면서 저도 javascript 의 메소드들을 많이 연습하고 익힌거 같아요 실제 개발하면서는 단순 노가다로 작업을 많이 하거든요 포스팅도 하고 일에 도움도 되는 1석 2조의 포스팅 시리즈!! 오늘도 시작해보겠습니다~

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

입출력 예
nreturn
12345[5,4,3,2,1]

문제를 읽어보니 숫자를 배열로 뒤바꿔서 보여달라고 하네요(손으로 쓰면 금방인걸..)
간단히 생각해서 숫자 개수대로 반복을 해서 뒤부터 차례대로 배열에 담아버리자!!
그래서 풀어봤습니다 바로 정답 가시죠!

function solution(n) {
    var answer = [];
    var nStr = n.toString();
    for(var i = 0; i < nStr.length; i++){
        answer.push(Number(nStr[nStr.length -1 -i]));
    }
    return answer;
}

n은 숫자로 되어있기 때문에 숫자를 순서대로 가져올수가 없어요 숫자는 하나이기때문에..
그래서 n을 문자로 변경을 해서(ex. 12345 -> '12345') 로 변경을 하면 문자열로 변경이 되기 때문에각 위치의 값을 찾아올수가 있겠죠? 그래서 처음에 n.toString() 을 했습니다
그리고 위에서 말씀드린거 처럼 반복을 해서 각 뒤부터 차례대로 배열로 담자 그래서 for문을 실행하고 문자열을 뒤부터 차례대로 배열에 담았습니다 문자 뒷부분 조회하는건 subStr를 이용해서 잘라서 담았습니다

그리고 다른 사람의 풀이를 봤습니다..두둥..!!

function solution(n) {
    var answer = [];
    return n.toString().split('').reverse().map(o => o = parseInt(o));
}

허허..참 간단하네요 여기에서 toString().split('').reverse() 까지는 생각했는데 map은 안써봐서 몰랐네요 이렇게 편할수가..!! map 객체에 대해 공부해서 다음에 포스팅 하겠습니다 공부공부!!!

지금시간이 되도 엄청 더운 하루인데 다들 잘 버티고 계신지는 모르겠습니다 그래도 즐겁게 스팀잇도 하시고 가족과 시간을 보내며 더운 밤 잘 버티시길 바랍니다!! 화이팅!!

Sort:  

(jjangjjangman 태그 사용시 댓글을 남깁니다.)
[제 0회 짱짱맨배 42일장]4주차 보상글추천, 1,2,3주차 보상지급을 발표합니다.(계속 리스팅 할 예정)
https://steemit.com/kr/@virus707/0-42-4-1-2-3

4주차에 도전하세요

그리고 즐거운 스티밋하세요!

매번 감사합니다~~!!

무슨소린지...또르륵....ㅋㅋ

저도 사실 의식의 흐름으로..(응??) ㅋㅋ

한 열번 정도만 정독해보려구요.. 그래도 안되면...말구요 ㅋㅋ

후아 진짜 한번 이해 시켜드리고 싶은데..!!ㅠㅠㅋ

수학적으로 접근하는 알고리즘도 알아 두시면 좋을듯합니다.
즉 N을 a진수로 표현하는 알고리즘입니다.

10,000,000,000까지가 한계임으로
a가 만약 58이라면
58 ^ 6 = 38,068,692,544
58 ^ 5 = 656,356,768
임으로

첫째수 = N// a^5
둘째수는 N % a^5 // a^4
셋째수는 N %a^5 % a^4 // a^3(%a^5는 생략해도상관없을듯요^^)
......이될것입니다.

그러나 N이 한계치가 없을 경우를 대비해 거꿀루 풀어봅시다.
가장 끝수 N% a
끝에서 두번째 수 (N%a^2)// a (또는 N//a %a)
끝에서 세번째 수 (N%a^3)// a^2 (또는 N//a^2 %a)
..........

이것은 암호화화폐에서 흔히 쓰는 Base58 풀이 방법이기도합니다.

암호화폐 만들때 쓰는게 이런 방식이군요~근데 저는 이해가 안되서 ㅠ 머리가 굳었나부네요 저걸 수학적 접근 방식을 쓰는 이유와 방법이 이해가 안되네요..ㅠ

Coin Marketplace

STEEM 0.09
TRX 0.32
JST 0.032
BTC 110211.21
ETH 4029.80
USDT 1.00
SBD 0.64