주사위 개수
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.
- box의 길이는 3입니다.
- box[0] = 상자의 가로 길이
- box[1] = 상자의 세로 길이
- box[2] = 상자의 높이 길이
- 1 ≤ box의 원소 ≤ 100
- 1 ≤ n ≤ 50
- n ≤ box의 원소
- 주사위는 상자와 평행하게 넣습니다.
function solution(box, n) {
// const row = Math.floor(box[0] / n);
// const col = Math.floor(box[1] / n);
// const height = Math.floor(box[2] / n);
// return row * col * height;
let answer = 1;
for(let i = 1; i < 3; i++) {
answer += Math.floor(box[i] / n);
}
}
합성수 찾기
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
- 1 ≤ n ≤ 100
// 약수는 1과 자기자신을 포함하므로, 나누어 떨어지는 값 한 개만 찾으면 된다!!
function solution(n) {
let answer = 0;
for(let i = n; i >= 1; i--) {
let isCount = false;
for(let num = 2; num < i-1; num++) {
if(i % num === 0) isCount = true;
}
if(isCount) answer++;
}
return answer;
}
// 리팩토링
const getIsCount = (i) => {
let isCount = false;
for(let num = 2; num < i-1; num++) {
if(i % num === 0) isCount = true;
}
return isCount;
}
function solution(n) {
let answer = 0;
for(let i = n; i >= 1; i--) {
const isCount = getIsCount(i);
if(isCount) answer += 1;
}
return answer;
}
함수의 모듈화!
합성수인지 여부를 판별하는 코드를 별도의 함수로 만들어서 가독성을 좋게 만들자!
최댓값 만들기 (1)
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
- 0 ≤ numbers의 원소 ≤ 10,000
- 2 ≤ numbers의 길이 ≤ 100
function solution(numbers) {
let maxValue = -1;
for(let i = 0; i < numbers.length; i++) {
for(let j = i+1; j < numbers.length; j++) {
maxValue = Math.max(maxValue, numbers[i] * numbers[j]);
}
}
return maxValue;
}
// 다른 사람의 풀이
function solution(numbers) {
const sortedNumbers = numbers.sort((a,b) => b-a);
return sortedNumbers[0] * sortedNumbers[1];
}
max()
<다른 사람의 풀이에 대한 이해>
sort()
팩토리얼i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
- i! ≤ n
- 0 < n ≤ 3,628,800
// 팩토리얼 계산하는 함수
const getFactorial = (i) => {
let result = 1;
for(let v = 1; v <= i; v++) {
result *= v;
}
return result;
}
function solution(n) {
for(let i = 1; ; i++) {
const result = getFactorial(i);
if(n < result) return i - 1;
}
}
참고 영상
'코딩테스트 > 프로그래머스 0단계 - 입문' 카테고리의 다른 글
프로그래머스 0단계 - Day13 문자열, 배열, 사칙연산, 수학, 조건문 (0) | 2024.03.20 |
---|---|
프로그래머스 0단계 - Day12 문자열, 정렬, 사칙연산, 수학 (0) | 2024.03.19 |
프로그래머스 0단계 - Day10 조건문, 배열, 수학, 시뮬레이션 (0) | 2024.03.18 |
프로그래머스 0단계 - Day9 수학, 문자열, 해시, 완전탐색, 조건문 (0) | 2024.03.18 |
프로그래머스 0단계 - Day8 배열, 구현, 수학 (0) | 2024.03.17 |
댓글