우당탕탕 개발일기
[프로그래머스/ 자바스크립트] 자연수 뒤집어 배열로 만들기 본문
문제의 포인트라고 생각했던 곳은
- 자연수를 배열 형태로 return 하는 것 : answer에 push로 넣는걸까?
- 붙어있는 숫자를 따로 떼어내는 것
- 그 떼어낸 숫자 사이에 쉼표를 집어넣는 것
이정도로 생각했다. 문제는 이걸 구현하는 방법이 어떤게 있느냐,,🤫
우선, 문자열 뒤집기로 검색했을 때 눈에 띄는 정보가 있었다. 바로 str.split('').reverse().join('');
1️⃣ split를 사용해 문자열(str)을 배열로 변환하여, 2️⃣ reverse로 배열로 변환한 것의 순서를 뒤집어주고, 3️⃣ join으로 다시 문자열로 합쳐주는 과정을 의미한다.
이 때, join 뒤에 빈칸으로 두면 문자열로 합쳐질 때 사이에 ','가 자동으로 들어간다고 한다.
이 점까지 내가 지금 풀 문제에 잘 적용할 수 있을 것 같아서 코드를 적어보았다.
.
.
(엉망 코드!!!!!)
function solution(n) {
var answer = [];
var string = n.split('').reverse().join();
return answer.push(string)
}
하지만, 실행되지 않는 코드.. 문제는 바로 냅다 넣었던 'push'와 'split'!
push는 제일 많이 의심하던 부분이어서 없애서 수가 나열되도록 만들었지만,
split는 두 군데나 손대야해서 자세히 들여다봐야했다.
먼저, split의 매개변수를 주는 것.
나는 split()으로 주었더니 n=12345가 하나하나 떨어지는게 아니라 "12345" 전체로 문자열이 되어버렸다.
split('')으로 따옴표를 넣어 '1', '2', '3', '4', '5' 떨어지게끔 해결 완료!
두 번째는, split은 '문자열'을 배열로 변경하는 기능을 한다는 것.
자연스럽게 넣었던 n은 자연수이므로, n을 문자열로 변환해야 split 사용이 가능해진다.
(그렇지 않으면 n.split is not a function이라는 오류 메세지를 보게 된다.)
toString을 이용하여 n을 문자열로 변환하니 해결 완료!
의외로 빼도 됐던건 바로 join! 배열로 return 해야하니 굳이 join으로 문자열로 만들 필요가 없었다!
(💥엉망 코드 2..)
저기까지 해결하고 나니 문제는 배열안의 요소들이 '문자열'로 되어있다는 것.
구글링해보니 원인은 split!
split을 적용하면 잘라진 값들이 '문자열'로 변환되기때문에 이 일이 일어난 것이었고,
이는 split 함수 뒤에 .map(Number)만 붙여주면 문자가 숫자로 변환되어 배열로 들어가게 된다!
.
.
.
💡나의 최종 코드
function solution(n) {
var answer = n.toString().split('').reverse().map(Number);
return answer
}
여러번의 수정과정을 걸쳐서 완성된 나의 최종코드..!
수정과정이 참 힘든 문제였다..!
📍출처 : https://programmers.co.kr/learn/courses/30/lessons/12932
'What I Learned > Algorithm' 카테고리의 다른 글
[프로그래머스 / 자바스크립트] 같은 숫자는 싫어 (0) | 2022.01.24 |
---|---|
[프로그래머스 / 자바스크립트] 콜라츠 추측 (0) | 2022.01.24 |
[프로그래머스 / 자바스크립트] 수박수박수박수박수박수? (0) | 2022.01.24 |
[프로그래머스 / 자바스크립트] 내적 (0) | 2022.01.24 |
[프로그래머스 / 자바스크립트] x만큼 간격이 있는 n개의 숫자 (0) | 2022.01.24 |