문제 설명 : 구슬을 나누는 경우의 수
머쓱이가 구슬을 친구들에게 나누어주려고 함. 구슬은 모두 다르게 생김.
머쓱이가 갖고 있는 구슬의 개수 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;
}
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
www.programmers.co.kr
'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 |