문제 : 영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
function solution(numbers) {
const arr = [];
let str = '';
const numSet = {
zero:0,
one:1,
two:2,
three:3,
four:4,
five:5,
six:6,
seven:7,
eight:8,
nine:9
};
for (let i = 0 ; i < numbers.length ; i++){
str+= numbers[i]
for(let key in numSet){
if(str.includes(key)){
arr.push(numSet[key])
str=''
}
}
}
return Number(arr.join(''))
}
///다른 사람의 풀이
function solution(numbers) {
numbers = numbers.replace(/one/g, 1);
numbers = numbers.replace(/two/g, 2);
numbers = numbers.replace(/three/g, 3);
numbers = numbers.replace(/four/g, 4);
numbers = numbers.replace(/five/g, 5);
numbers = numbers.replace(/six/g, 6);
numbers = numbers.replace(/seven/g, 7);
numbers = numbers.replace(/eight/g, 8);
numbers = numbers.replace(/nine/g, 9);
numbers = numbers.replace(/zero/g, 0);
return numbers*1
}
🗒️코멘트 : 난..이 문제를 왜 이렇게 어렵게 푼 걸까..처음에 replace
를 썼지만, 생각해보니 replace
는 numbers
인자에 직접적인 영향을 끼치지는 않는다는 것이다..그래서 거기에 막혀 방향을 바꿔 저렇게 풀었는데..다른 사람들 풀이 법을 보니..나는 아직 멀었다는 생각이 들었다.
문제 : 소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 2 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
function solution(n) {
const divisors = [];
const primes =[];
for (let i = 1 ; i <= n ;i++){
if (n % i == 0){
divisors.push(i)
}
}
for (let j= 0; j <divisors.length;j++){
if(findPrimes(divisors[j])){
primes.push(divisors[j])
}
}
return primes
}
function findPrimes(divisor){
const primesQ = [];
for (let i = 1 ; i <= divisor ;i++){
if (divisor % i == 0){
primesQ.push(i)
}
}
if(primesQ.length == 2){
return true
} else{return false}
}
🗒️코멘트 : 수학을 좋아하는 사람으로써 한 번쯤은 풀어보고 싶었던 문제!
문제 : 머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.
function solution(balls, share) {
const numerator = fact(balls);
const denom1 = fact(share);
const denom2 = fact((balls-share))
let answer = Math.round(numerator / (denom1*denom2))
return answer
}
function fact(number){
let answers = 1;
for (let i = number; i >= 1; --i){
BigInt(answers *= i)
}
return answers
}
🗒️코멘트 : 푸는 방식은 알았으나.....계속 답이 나오지 않아 일일이 몇 가지 테스트를 거쳐 가며 깨달았다....자바스크립트 내에서 정수를 표현하는 방식이 정해져 있다는 것을..자바스크립트 내에서는 큰 정수의 경우 BigInt를 써줘야 하며 그걸 쓸 경우, 반올림을 해줘야 되는 것을...
문제 : my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.
제한사항
function solution(my_string) {
const splited = my_string.split(" ");
let ans = Number(splited[0]);
splited.forEach((item, index) => {
if(item === "+"){
ans += Number(splited[index + 1]);
}
if(item === "-"){
ans -= Number(splited[index + 1]);
}
})
return ans;
}
🗒️코멘트 : 배열로 변환한 후 기호에 따라 다음 문자를 더해 줄 지, 빼 줄지를 생각해보면 될 것을 너무 어렵게 생각했다.
문제 : 머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다.
function solution(M, N) {
let vertical = M - 1;
let horizontal = (N-1) * M;
return vertical + horizontal
}
🗒️코멘트 : NULL