프로그래머스 중복된 문자 제거 문제를 풀며 알게된 메서드. 문제는 다음과 같다.
my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.function solution(my_string) {
return [...new Set([...my_string])].join('');
}
내가 푼 답이다. 이 때 my_string은 그 자체로도 이터러블이기 때문에 굳이 배열로 만들어서 바꿔줄 필요가 없다. 그러므로 그냥 my_string으로 넣어도 된다.
메서드는 알고 있었으나 어떤 경우에 쓰일지 몰라 잊고 있었는데, 문제 풀이를 하다가 알게 되었다.
num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요.num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다.이 메서드를 사용하지 않고 푼 답은 다음과 같았다.
function solution(num_list, n) {
let answer = [];
let arr = [];
for (let i=0; i<num_list.length; i++){
arr.push(num_list[i]);
if (arr.length == n) {
answer.push(arr);
arr = [];
}
}
return answer;
}
풀긴 했으나 코드가 길다.
이 때 arr.splice() 메서드를 사용하면 좀 더 간단하게 해결할 수 있다.
function solution(num_list, n) {
let answer = [];
while(num_list.length){
answer.push(num_list.splice(0,n));
}
return answer;
}
정확한 사용 방법은 기술 부채로 남겨두고, 문제를 풀 때 사용한 방법에 관해서는 이해가 되었기에 작성한다.
letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.우선 내가 푼 코드는 다음과 같다.
function solution(letter) {
let answer = ''
let morse = {
'.-': 'a', '-...': 'b', '-.-.': 'c', '-..': 'd', '.': 'e', '..-.': 'f',
'--.': 'g', '....': 'h', '..': 'i', '.---': 'j', '-.-': 'k', '.-..': 'l',
'--': 'm', '-.': 'n', '---': 'o', '.--.': 'p', '--.-': 'q', '.-.': 'r',
'...': 's', '-': 't', '..-': 'u', '...-': 'v', '.--': 'w', '-..-': 'x',
'-.--': 'y', '--..': 'z'
}
let arr = letter.split(' ');
for (let i=0; i<arr.length; i++){
answer += morse[arr[i]];
}
return answer;
}
이 방법을 사용한 사람들도 꽤 보였지만, 더 간단한 방법이 바로 reduce() 메서드를 사용한 방법이었다.
function solution(letter) {
let answer = ''
let morse = {
'.-': 'a', '-...': 'b', '-.-.': 'c', '-..': 'd', '.': 'e', '..-.': 'f',
'--.': 'g', '....': 'h', '..': 'i', '.---': 'j', '-.-': 'k', '.-..': 'l',
'--': 'm', '-.': 'n', '---': 'o', '.--.': 'p', '--.-': 'q', '.-.': 'r',
'...': 's', '-': 't', '..-': 'u', '...-': 'v', '.--': 'w', '-..-': 'x',
'-.--': 'y', '--..': 'z'
}
return letter.split(' ').reduce((prev, curr)=>prev + morse[curr],'')
}
morse 내 curr에 해당하는 알파벳을 계속 반복해 prev에 넣어주면서 반복문을 사용하지 않아도 반복을 시켜 문제를 해결할 수 있었다.