프로그래머스 : JavaScript 알고리즘 100일 챌린지 11일차
- 프로그래머스 : https://school.programmers.co.kr/learn/challenges/training?order=acceptance_desc
- 유트브 참고 : https://www.youtube.com/watch?v=RMmOU2u-_as&list=PLkfUwwo13dlWZxOdbvMhkzhAowaiEjuGS
코딩테스트 입문 Day11
1. 주사위의 개수 : 머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.
function solution(box, n) {
var answer = 0;
return answer;
}
길라잡이
- 데이터를 수정해서 답을 구해보세요.
- 예시
box | n | result |
[1, 1, 1] | 1 | 1 |
[10, 8, 6] | 3 | 12 |
답 확인하기
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;
}
해설 확인하기
코드는 주어진 박스의 크기와 정수 n을 기반으로, 박스 내부에 n 크기의 작은 박스를 최대한 많이 넣을 수 있는 개수를 계산하는 함수 solution입니다.
해당 함수는 다음과 같은 방식으로 동작합니다:
박스의 가로 길이를 n으로 나눈 몫을 구하여 row 변수에 할당합니다. 이는 가로 방향으로 n 크기의 작은 박스를 넣을 수 있는 최대 개수입니다.
박스의 세로 길이를 n으로 나눈 몫을 구하여 col 변수에 할당합니다. 이는 세로 방향으로 n 크기의 작은 박스를 넣을 수 있는 최대 개수입니다.
박스의 높이를 n으로 나눈 몫을 구하여 height 변수에 할당합니다. 이는 높이 방향으로 n 크기의 작은 박스를 넣을 수 있는 최대 개수입니다.
row, col, height를 곱하여 최대로 넣을 수 있는 작은 박스의 개수를 계산합니다.
최종적으로 계산된 결과를 반환합니다.
즉, solution 함수는 주어진 박스의 크기와 정수 n을 기반으로, 박스 내부에 최대한 많은 크기 n의 작은 박스를 넣을 수 있는 개수를 계산하여 반환합니다.
2. 합성수 찾기 : 약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
function solution(n) {
var answer = 0;
return answer;
}
길라잡이
- 데이터를 수정해서 답을 구해보세요.
- 예시
n | result |
10 | 5 |
15 | 8 |
답 확인하기
function solution(n) {
let answer = 0;
for(let i=n; i >= 1; i--){
// i가 합성수인지 비교하는 숫자
let isCount = false;
for(let num=2; num<i-1; num++){
if(i % num === 0){
// 합성수
isCount = true;
}
}
// isCouont 합성수 여부 확인 가능
if(isCount){
answer += 1;
}
}
return answer;
}
해설 확인하기
코드는 주어진 정수 n보다 작거나 같은 수 중에서 합성수(소수가 아닌 수)의 개수를 계산하는 함수 solution입니다.
해당 함수는 다음과 같은 방식으로 동작합니다:
초기값으로 answer 변수를 0으로 설정합니다. 이 변수는 합성수의 개수를 저장할 변수입니다.
반복문을 통해 i를 n부터 1까지 감소시키면서 수를 검사합니다.
내부 반복문에서는 i가 합성수인지를 판별하기 위해 2부터 i-1까지의 숫자로 나누어 나머지를 검사합니다.
만약 i를 num으로 나눈 나머지가 0이라면, i는 합성수이므로 isCount 변수를 true로 설정합니다.
내부 반복문을 모두 실행한 후, isCount 변수를 확인하여 합성수인 경우에만 answer 변수를 1 증가시킵니다.
반복문이 종료되고 나면 최종적으로 answer 변수에는 주어진 범위 내의 합성수의 개수가 저장되어 있습니다.
answer 값을 반환합니다.
즉, solution 함수는 주어진 정수 n보다 작거나 같은 수 중에서 합성수의 개수를 계산하여 반환합니다.
3. 최댓값 만들기(1) : 정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
function solution(numbers) {
var answer = 0;
return answer;
}
길라잡이
- 데이터를 수정해서 답을 구해보세요.
- 예시
numbers | result |
[1, 2, 3, 4, 5] | 20 |
[0, 31, 24, 10, 1, 9] | 744 |
답 확인하기
function solution(numbers) {
const sortNumbers = numbers.sort((a,b) => b-a);
return sortNumbers[0] * sortNumbers[1];
}
해설 확인하기
코드는 주어진 배열 numbers에서 가장 큰 두 수를 찾아 곱한 결과를 반환하는 함수 solution입니다.
해당 함수는 다음과 같은 방식으로 동작합니다:
주어진 배열 numbers를 내림차순으로 정렬합니다. sort() 메서드를 사용하며, 비교 함수 (a, b) => b - a를 통해 큰 순서로 정렬됩니다.
정렬된 배열 sortNumbers에서 첫 번째와 두 번째 요소를 가져와서 곱한 결과를 반환합니다. 이는 가장 큰 두 수를 곱한 값입니다.
즉, solution 함수는 주어진 배열 numbers에서 가장 큰 두 수를 찾아 곱한 값을 반환합니다.
4. 팩토리얼 : i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
function solution(n) {
var answer = 0;
return answer;
}
길라잡이
- 데이터를 수정해서 답을 구해보세요.
- 예시
n | result |
3628800 | 10 |
7 | 3 |
답 확인하기
const factorial = e => {
let result = 1;
for(let i = 1; i<=e; i++){
result *= i;
}
return result
}
function solution(n) {
for(let i=1; ; i++){
const result = factorial(i);
if(n < result){
return i - 1;
}
}
}
해설 확인하기
코드는 주어진 정수 n보다 작은 팩토리얼 값을 갖는 최대 정수를 반환하는 함수 solution과, 팩토리얼 값을 계산하는 함수 factorial로 구성되어 있습니다.
먼저, factorial 함수는 주어진 인자 e의 팩토리얼 값을 계산하여 반환합니다. 해당 함수는 다음과 같은 방식으로 동작합니다:
초기값으로 result 변수를 1로 설정합니다. 이 변수는 팩토리얼 값을 저장할 변수입니다.
반복문을 통해 i를 1부터 e까지 증가시키면서 팩토리얼 값을 계산합니다.
각 반복에서 result 변수에 i를 곱하여 값을 갱신합니다.
반복문이 종료되고 나면 최종적으로 result 변수에는 e의 팩토리얼 값이 저장되어 있습니다.
result 값을 반환합니다.
이어서, solution 함수는 반복문을 통해 주어진 정수 n보다 작은 팩토리얼 값을 갖는 최대 정수를 찾아 반환합니다. 함수는 다음과 같은 방식으로 동작합니다:
반복문을 통해 i를 1부터 무한대까지 증가시킵니다.
각 반복에서 factorial 함수를 호출하여 i의 팩토리얼 값을 계산합니다.
팩토리얼 값 result와 주어진 정수 n을 비교하여 n보다 큰 경우, i - 1을 반환합니다. 이는 주어진 n보다 작은 팩토리얼 값을 갖는 최대 정수입니다.
즉, solution 함수는 주어진 정수 n보다 작은 팩토리얼 값을 갖는 최대 정수를 반환합니다. factorial 함수는 인자로 전달된 수의 팩토리얼 값을 계산하여 반환합니다.