[프로그래머스] 한 번만 등장한 문자답function solution(s) { return [...s].filter(el => [...s].filter(el2 => el === el2).length === 1 ).sort().join('');}동작 방식1. 문자열을 배열로 변환[...s] // 예를 들어, s가 "aabbcd"라면 ['a', 'a', 'b', 'b', 'c', 'd'] 2. 첫 번째 filter - filter 메소드는 배열의 각 요소를 순회하며, 주어진 조건을 만족하는 요소들만을 새로운 배열에 포함시킵니다. - 여기서 조건은 각 문자가 문자열에서 한 번만 나타나는지 확인하는 것입니다. 3. 두 번째 filter - 내부 filter는 첫 번째 filter의..
배열의 원소만큼 추가하기 풀이 // 풀이 1 function solution(arr) { return arr.reduce((list, num) => [...list, ...new Array(num).fill(num)], []); } // 풀이 2 function solution(arr) { return arr.reduce((acc, cur) => acc.concat(new Array(cur).fill(cur)), []) } 요점 1) array.fill( value [ , start, end ] ) : 배열의 start index부터 end index 전까지 value 값으로 채워주는 함수이다. // arr.fill(value[, start, end]) // value : 배열에 채울 값 // start..
문제 (분수의 덧셈) 일반 분수의 덧셈처럼 구해봤지만 최대공약수를 구하지 못해 많이 헤매었었다. 이 문제의 요점은 최대공약수를 구할 수 있냐 없냐에 달린 것 같다. 최대공약수 구하는 방법 function fnGCD(a, b){ return a % b? fnGCD(b, a % b) : b; } 재귀함수를 이용하여 최대공약수를 구한다. 결론 function solution(num1, denom1, num2, denom2) { function fnGCD(a, b){ // 최대공약수 return (a % b)? fnGCD(b, a % b) : b; } const top = num1 * denom2 + num2 * denom1; // 분자 const bottom = denom1 * denom2; // 분모 let..