자연수 뒤집기 알고리즘 문제이다.
https://programmers.co.kr/learn/courses/30/lessons/12932
문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
- n은 10,000,000,000이하인 자연수입니다.
입출력 예
< 문제 풀이 >
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
function solution(n) {
let str = n + '';
let arr = str.split('');
arr = arr.map(Number);
arr = arr.reverse();
return arr;
}
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
나의 계획. 12345를 문자열로 바꾼다음 split로 각각 1, 2, 3, 4, 5로 나눠서 배열에 담는다. '1' 같은 문자엘리먼트로 바뀐 arr를 다시 숫자로 바꿔준다. 이때 map(Number) 메소드를 사용하니 숫자로 한 번에 바뀌었다. 다음으로 reverse()메소드를 사용해서 54321로 반전시켜준다.
궁금증 풀기
여기서 map(Number) 메소드를 쓰긴 했지만 정확이 어떤 원리로 작동하는지는 몰랐다. 그래서 찾아보았더니 stack overflow에서 나와 같은 물음을 가진 사람이 있었다.
.map(Number);
이 코드는
.map((str, ind, arr) => Number(str, ind, arr));
이것을 줄인 것이다.
여기서 .map의 문법을 다시 살펴보자.
Syntax
array.map(function(currentValue, index, arr), thisValue)
array의 메소드인 map은 함수안에 argument가 현재값(엘리먼트), 인덱스, 현재배열, thisValue로 이루어져있다.
* 여기서 thisValue는 콜백함수와 관련된 것인데, 콜백함수는 나중에 다시 한 번 정리해야할 것 같다.
그래서 문법에 맞게 표현한다면
.map((str, ind, arr) => Number(str, ind, arr));
이렇게 표현하는 것일텐데 이 안에 argument 값들을 모두 생략하고 .map(Number)만 적은 것임을 알 수 있다. stack overflow에서 이 답변을 적어주신 분에 따르면 이 생략이 항상 동작하지는 않지만 동작하는 경우에는 매우 편리하다고 한다.
map(Number)에 대해서 찾다가 parameter와 argument 차이에 대해서 알아보게 되었다.
function prac (receive1, receive2) {
return '여기 있는 것은 파라미터야'
}
어디서부터 받아서 사용하는 것은 파라미터라고 부른다. 이 receive1과 receive2는 파라미터이다.
prac (value1, value2)
받아서 사용하라고 전달해주는 것을 argument라고 부른다. 이 value1, value2는 argument이다.
이제 parameter와 argument를 구분하여 부를 수 있게 되었다.
다른 사람들은 어떻게 풀었을까?
https://programmers.co.kr/learn/courses/30/lessons/12932/solution_groups?language=javascript
참고
stack overflow : 어떻게 map(Number)만 썼는데 배열 안을 숫자로 바꿔주는 지 알고 싶어요. https://stackoverflow.com/questions/48343478/what-does-mapnumber-do-here
argument 와 parameter의 차이 http://taewan.kim/tip/argument_parameter/
parameter 와 argument의 차이 https://velog.io/@colki/JS-parameter-%EC%99%80-argument-%EC%9D%98-%EC%B0%A8%EC%9D%B4-%EC%9D%B8%EC%88%98-%EC%9D%B8%EC%9E%90
'Algorithm' 카테고리의 다른 글
[알고리즘] #22 자릿수 더하기 | 프로그래머스 (0) | 2022.01.19 |
---|---|
[알고리즘] #24 정수 내림차순으로 배치하기 | 프로그래머스 (0) | 2022.01.19 |
[알고리즘] #20 완주하지 못한 선수 | 프로그래머스 (0) | 2022.01.19 |
[알고리즘] #17 문자열 다루기 기본 | 프로그래머스 (0) | 2022.01.19 |
[알고리즘] #18 서울에서 김서방 찾기 | 프로그래머스 (0) | 2022.01.19 |