-
[CodeKata] 프로그래머스 : 3.16(화), JadenCase 문자열 & N개의 최소공배수카테고리 없음 2021. 3. 16. 10:15반응형
🥋 Ooooth!! (Level 2) : JadenCase 문자열 만들기
🧮 풀이
function solution(s) { return s.split(" ") .map(e => e === '' ? e : e[0].toUpperCase() + e.slice(1).toLowerCase()) .join(" ") }
- 먼저, s(문자열)을 split을 통해 배열로 만들어준다.
- 이 배열의 각 요소를 map() 처리하는데, 빈 문자열('') 처리를 위해 위처럼 삼항연산자 형태로 적용했다.
- 빈 문자열이 아니라면, e의 첫 글자는 toUpperCase(), 나머지는 toLowerCase() 처리로 각각 대/소문자로 만든다.
- 마지막으로, 이를 다시 공백(" ")으로 join() 해서 문자열로 반환한다.
🥋 Ooooth!! (Level 2) : N개의 최소공배수
🧮 풀이
function gcd(minNum, maxNum){ return (minNum % maxNum) === 0 ? maxNum : gcd(maxNum, minNum % maxNum); } function lcm(minNum, maxNum){ return minNum * maxNum / gcd(minNum, maxNum); } function solution(arr) { return arr.reduce((a,b) => lcm(a,b), 1) }
- gcd는 두 수의 최대공약수, lcm은 최소공배수를 각각 반환하는 함수이다. (gcd를 같이 쓴 이유는, lcm에서 활용되기 때문)
- 여러 수의 최소공배수는, 앞에 둘부터 최소공배수를 찾아 이를 뒤의 수와의 최소공배수로 누적해주면 된다. (reduce)
🖇 리뷰
어제 (3.15, 월), 3차 프로젝트 마무리로 인해 문제를 풀지 못하기도했고, 난이도가 높진 않아 오늘 2문제를 풀었다.
오늘은 알고리즘적인 것보다는, 기본적인 메서드 활용 및 수학적인 문제이기 때문에 어려운 점은 없었다.
다만, JadenCase에서 빈 문자열 예외처리에 애를 먹었다. 알고리즘을 작성하면서, 항상 예외 케이스에 대한 염두를 명심해야겠다.
반응형