Programmers

Programmers 문제 풀이 35

백단비 2023. 8. 6. 17:09

문제 설명 : 소인수분해

소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다.

예를 들어 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;
}
320x100

'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