-
[프로그래머스] 자연수 뒤집어 배열로 만들기 - JavaScript 📝Algorithm 2021. 11. 9. 23:59
[링크]
https://programmers.co.kr/learn/courses/30/lessons/12932
[문제설명 및 입출력 예]
[내가 제출한 코드 및 풀이]
☠오답코드
- 문제에 대한 이해를 잘못하고 있었음.. (테스트 케이스도 잘못 넣었음)
☠테스트 결과
- 당연히 실패..
☠오답코드
- 문제를 잘못 이해하고 있어서 타입 때문인가하고 다시 숫자형으로 바꾸려 +도 붙이고 /1 도 했지만 역시나 오답
💯정답코드
📝풀이과정
더보기- 숫자를 순서대로 가져올 수 없기 때문에 문자열( toString() )로 형변환하여 담았다.
- 현재 상태에서 출력해보면, n이 12345라고 할 때 "12345" 이런식으로 출력된다.
- 이제 해당 문자열에서 각 자리 숫자를 뽑아오고 추가로 주어진 조건에 맞게 마지막 자리부터 뽑아서 54321 이런식으로 가져와야한다.
- 그러기 위해서 일단 array의 길이(length)만큼 반복문을 돌린다.
(처음에 문제 이해를 n=3이면 무조건 [3,2,1] 로 출력되어야하는 것으로 이해했는데, 질문하기 내용을 찾아보니 다른분이 친절하게 n=3이어도 132가 될 수 있고 이 경우 [2,3,1] 로 출력해야되는 것이라고 남겨주셨더라.) - 4번의 반복문은 n의 자리수만큼 돌아갈 것이고, 어떻게 끝자리수 부터 가져와서 출력해줄 것인지를 고민해 본다. 내가 생각한 방법은 "자리수-1-i" 인데 n="12345", n.length = 5이고 i=0일 때 (array[array.length -1 -i]) 를 연산하면 array[4]가 나오고 해당 인덱스의 문자열 5를 꺼낼 수 있다.
- 이제 5를 꺼냇으니 answer 배열에 넣어준다. push()를 사용하면 되겠지만, 그 전에 형변환을 하여 숫자로 바꿔줘야한다. 그래서 Number(array[4])의 형태로 바꿔주었다.
- 5에서 만든 Number(array[4])를 answer.push(담아주세요) 의 괄호 안에 담으면 answer에 숫자 타입의 5가 담길 것이다.
- n의 자리수만큼 for문이 돌아갈 것이므로, [5, 4, 3, 2, 1]의 형태로 담기고
- answer 배열을 return 하면 출력 예시와 동일하게 나올 것이다.
[다른 사람의 코드]
1234function solution(n) {var answer = [];return n.toString().split('').reverse().map(o => o = parseInt(o));}cs - map과 reverse 사용된 코드 (아래 코드와 비슷한데 to.String() 부분에서 살짝 차이 있음
12345function solution(n) {return String(n).split('').reverse().map(v => parseInt(v));}cs - map과 reverse 사용된 코드
12345678910function solution(n) {var arr = n.toString().split('');var answer = [];for(var i=arr.length-1; i>=0; i--){answer.push(Number(arr[i]));}return answer;}cs - arr의 길이에서 i-- 하면서 값을 넣음 (내가 제출한 코드와 반대이고, 처음에 시도했지만 마무리하지 못했던 코드😂)
123456789101112function solution(n) {var answer = [];n = n.toString();var len = n.length-1;for(let i=len; i>=0; i--){answer.push(parseInt(n.charAt(i)));}return answer;}cs - n.length-1 을 변수로 만들어서 내 코드보다 가독성 좋은 것 같고, n.charAt 을 사용해 문자 추출 후 parseInt(문자->숫자)로 형변환
'Algorithm' 카테고리의 다른 글
[프로그래머스] 하샤드 수 - JavaScript 📝 (0) 2021.11.10 [프로그래머스] 콜라츠 추측 - JavaScript 📝 (0) 2021.11.10 [프로그래머스] 정수 내림차순으로 배치하기 - JavaScript 📝 (0) 2021.11.09 [프로그래머스] 자릿수 더하기 - JavaScript 📝 (0) 2021.11.09 [프로그래머스] 이상한 문자 만들기 - JavaScript 📝 (0) 2021.11.09