문제 설명 : 소인수분해
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다.
예를 들어 12를 소인수 분해하면 2 * 2 * 3으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다.
자연수 n이 매개변수로 주어질 때, n의 소인수를 오름차순으로 담은 배열을 return 하도록하는 solution 함수???
제한 사항
- 2 ≤ n ≤ 10,000
입출력 예
n | result |
12 | [2, 3] |
17 | [17] |
420 | [2, 3, 5, 7] |
문제 풀이
i가 n보다 커지기 전까지 n을 i로 나눴을때 나머지가 0이면 answer에 다 담아주고
어차피 차례로 담기는 거라서 오름차순으로 정렬을 안 해줘도 되지만 그래도 확실하게 하기 위해
마지막에 answer을 오름차순으로 정렬해주고, Set으로 중복을 없애 줘서 풀었다.
function solution(n) {
var answer = []
let i = 2;
while (i <= n) {
if (n % i === 0) {
answer.push(i)
n = n / i
} else {
i++
}
}
answer.sort((a,b) => a - b)
return [...new Set(answer)]
}
문제 설명 : 피자 나눠 먹기(2)
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다.
피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때,
n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면
최소 몇 판을 시켜야 하는지를 return하는 solution 함수???
제한 사항
- 1 ≤ n ≤ 100
입출력 예
n | result |
6 | 1 |
10 | 5 |
4 | 2 |
문제 풀이
한 판의 피자 조각이 6 사람의 수가 n일때
피자의 조각 수를 n으로 나눴을때 나머지가 0이면 반환 그렇지 않으면
한 판의 피자 조각 수를 더해줘서 나머지가 0이 될 때까지 while문으로 반복 돌리고
마지막의 피자 조각 수를 한 판의 조각 수인 6으로 나눠주면 된다.
function solution(n) {
let piece = 6
while(piece % n !==0){
piece+=6
}
return piece/6;
}
문제 설명 : 합성수 찾기
약수의 개수가 세 개 이상인 수를 합성수라고 합니다.
자연수 n이 매개변수로 주어질 때 n 이하의 합성수의 개수를 return 하는 solution함수???
제한 사항
- 1 ≤ n ≤ 100
입출력 예
n | result |
10 | 5 |
15 | 8 |
문제 풀이
약수가 세 개 이상이면 합성수니까 합성수 말고 소수를 구하는 함수를 만들어서 소수를 구하고
전체 개수에서 소수의 개수를 구해서 빼주었다.
function solution(n) {
const isPrimeNum = (num) => {
for(let i =2; i < num; i++) {
if(num % i === 0){
return false
}
}
return true
}
var answer = n;
for(let i = 1; i <= n; i++){
if(isPrimeNum(i)) {
answer --;
}
}
return answer;
}
'Programmers' 카테고리의 다른 글
Programmers 문제 풀이 37 (0) | 2023.08.21 |
---|---|
Programmers 문제 풀이 36 (0) | 2023.08.08 |
Programmers 문제 풀이 34 (0) | 2023.08.02 |
Programmers 문제 풀이 33 (0) | 2023.07.31 |
Programmers 문제 풀이 32 (0) | 2023.07.28 |