Programmers

Programmers 문제 풀이 38

백단비 2023. 8. 22. 23:41

문제 설명 : 구슬을 나누는 경우의 수

머쓱이가 구슬을 친구들에게 나누어주려고 함. 구슬은 모두 다르게 생김.

머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬의 개수 share이 매개 변수로 주어질 때,

balls 개의 구슬 중 share 개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution함수???

 

제한 사항

  • 1 ≤ balls ≤ 30
  • 1 ≤ share ≤ 30
  • 구슬을 고르는 순서는 고려하지 않습니다.
  • share ≤ balls

 

입출력 예

 

balls share result
3 2 3
5 3 10

 

문제 풀이

 

 

이것을 간략하게 예를 들어보자면 n = 5 m =2라고 할 때, n-m = 3

(5 * 4 * 3 * 2 * 1) / (3 * 2 * 1 * 2 * 1) 이렇게 나오는데 여기서 대충 똑같은 숫자의 분자와 분모를 지워주면

5 * 4 / 2 * 1 이 나온다. 즉, 여기 공식을 간단히 하자면

분자는 n부터 m의 개수만큼 -1씩 해준걸 차례로 곱해주고

분모는 m부터 m이 1이 될 때까지 -1씩 해준 걸 곱해주면 된다. 말은 어렵지만 풀이를 보면 간단함

제가 말을 잘 못해서... 글을 못쓰는 건가??? 무튼간요.^^

while문으로 반복해서 풀었다. 마지막에 math.floor는 정수를 구해주기 위해서 사용했다.

 

function solution(balls, share) {
  let denominator = 1
  let numerator = 1  
	while(share > 0) {
	  numerator *=balls
	  denominator *=share
	  share--
	  balls--
	}  
  return Math.floor(numerator/denominator); 
}

 

 


 

 

문제 설명 : 삼각형의 완성조건 (2)

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 한다.

 - 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 한다.

삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다.

나머지 한 변이 될 수 있는 정수의 개수를 return 하도록 solution 함수를 완성해 주세요.

 

제한 사항

  • sides의 원소는 자연수입니다.
  • sides의 길이는 2입니다.
  • 1 ≤ sides의 원소 ≤ 1,000

 

입출력 예

 

sides result
[1, 2] 1
[2, 6] 5
[11, 7] 13

 

문제 풀이

 

먼저 sides 배열을 오름차순으로 정렬을 한 후

sides안의 변의 길이의 수가 제일 클 경우와 나머지 한 변이 될 수 있는 정수가 제일 클 경우 두 가지에서 

나머지 두 변의 수를 더한 것보다 작으면 개수 추가를 해주는 식으로 풀었다.

function solution(sides) {
  var answer = 0;
  sides.sort((a,b) => a-b)
  for(let i = 0; i <sides[1]; i++){
	if(i + sides[0] > sides[1]) {
	  answer++
	}
  }
  for(let i = sides[1]; i < sides[0] + sides[1]; i++){
	answer++
  }
  return answer;
}

 

 

 

https://www.programmers.co.kr 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

www.programmers.co.kr

 

320x100

'Programmers' 카테고리의 다른 글

Programmers 문제 풀이 40  (0) 2023.08.25
Programmers 문제 풀이 39  (0) 2023.08.24
Programmers 문제 풀이 37  (0) 2023.08.21
Programmers 문제 풀이 36  (0) 2023.08.08
Programmers 문제 풀이 35  (0) 2023.08.06