아래 링크에 연결된 유튜브 영상을 통해 학습했다.
감으로는 알겠지만 확실하게 학습하기 위해서는 직접 해보면서 느껴야할 것 같아서 이번 혼자살때 개선 프로젝트에서 리팩토링할 때 주로 사용하게 될 것 같다.
리액트를 명령형으로 짜면 안되는 이유? 예시코드로 알아보자! (+ 선언적 코드로 리팩토링 해보기)
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
function solution(numbers) {
const answer = numbers
.map((number) => String(number))
.sort((a, b) => b + a - (a + b))
.join("");
return answer[0] === "0" ? "0" : answer;
}
쉽지 않은 과정 끝에 풀었다.
다른 부분은 크게 중요하지 않고 제일 중요했던 부분은 sort를 하는 부분이었다. sort를 사용할 때 그저 내림차순, 오름차순으로 정렬하는 방법만 알았지 다르게 응용할 방법을 생각한 적이 없었다.
이 문제에서 중요한 부분은 실제로 크기가 크더라도 꼭 해당 숫자가 앞에 온다고 가장 큰 수가 나오는 게 아니라는 점이다. 이를 해결하기 위해서는 두 숫자의 위치를 바꿔 붙여 나온 두 수를 비교하여, 더 큰 숫자가 나온 수의 앞 숫자가 앞으로 와야하는 점이었다.
때문에 sort를 해당 코드에 맞게 수정했고, 따라서 가장 큰 수가 나오는 순서대로 배열을 조절할 수 있었다.
또한 마지막에는 0이 나열된 문자열이 나올 수 있기 때문에, 첫 문자열이 0일 경우 나머지 문자열도 0이기 때문에 0을 return하고 아닐 경우 answer을 return하도록 했다.
정수 n이 주어질 때, n을 문자열로 변환하여 return하도록 solution 함수를 완성해주세요.
function solution(n) {
return String(n);
}
너무 간단한 문제이기에 따로 설명을 덧붙이진 않겠다.
숫자로만 이루어진 문자열 n_str이 주어질 때, n_str을 정수로 변환하여 return하도록 solution 함수를 완성해주세요.
function solution(n_str) {
return Number(n_str);
}
이 역시 간단한 문제였다.
정수로 이루어진 리스트 num_list가 주어집니다. num_list에서 가장 작은 5개의 수를 제외한 수들을 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
function solution(num_list) {
num_list.sort((a, b) => a - b).splice(0, 5);
return num_list;
}
먼저 오름차순으로 num_list를 정렬하고 splice를 통해 작은 5개의 수를 배열에서 제외시켰다. 그렇게 변경된 num_list를 return하여 문제를 해결했다.