하루에 4문제씩만 풀어야지 했는데 벌써 프로그래머스 0레벨 62문제를 풀었다..! 👍
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
내림차순으로 sort 후 배열 앞 두 수를 곱해주었다.
function solution(numbers) {
numbers.sort((a, b) => b - a);
return numbers[0] * numbers[1];
}
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.
주사위는 상자와 평행하게 넣어야하므로 상자의 가로, 세로, 높이를 주사위의 모서리 길이로 나눈 후 곱해주었다.
function solution(box, n) {
return box.map((el) => ~~(el / n)).reduce((a, b) => a * b);
}
i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 4 3 2 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
팩토리얼 문제가 나오면 무조건 재귀함수를 써야지! 하는 생각이 코드를 더 복잡하게 만들었다.
다른 사람 풀이를 보면 while문 하나로 문제를 해결하는 경우가 있어서 코드를 참조해왔다.
function solution(n) {
let i = 1;
function fac(num) {
if (num === 1) return 1;
return num * fac(num - 1);
}
while (fac(i) <= n) {
i++;
fac(i);
}
return i - 1;
}
function solution(n) {
let res = 1;
let i = 0;
while (res <= n) {
i++;
res *= i;
}
return i - 1;
}
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
n을 1부터 n까지의 수로 나누었을 때 나머지가 0인 값들을 answer 객체에 추가해주었다.
최종적으로 answer객체에 3이상의 값을 가진 Key값만 result 배열에 넣어주었고
result배열의 길이를 return 해주었다.
function solution(n) {
let answer = {};
let result = [];
for (let i = 4; i <= n; i++) {
for (let k = 1; k <= n; k++) {
if (i % k === 0) {
!answer[i] ? (answer[i] = 1) : answer[i]++;
}
}
}
for (let i in answer) {
if (answer[i] >= 3) {
result.push(i);
}
}
return result.length;
}
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
map을 이중으로 돌려 같은 값이면 answer을 +1 해주었다.
function solution(s1, s2) {
let answer = 0;
s1.map((el) =>
s2.map((item) => {
item === el && answer++;
})
);
return answer;
}
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
max값을 골라낸 후 나머지 값들을 더한 값과 비교하여 리턴해주었다.
function solution(sides) {
let answer = Math.max(...sides);
sides[sides.indexOf(answer)] = 0;
let others = sides.reduce((a, b) => a + b);
return answer < others ? 1 : 2;
}
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
answer이라는 변수에 numbers의 단어를 한글자씩 채워 answer값이 alphabet 배열의 값에 포함되어 있으면
res에 해당하는 alphabet 인덱스 값을 추가해주어 리턴하였다.
function solution(numbers) {
let answer = "";
let res = "";
let alphabet = [
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine",
];
for (let i of numbers) {
answer += i;
if (alphabet.includes(answer)) {
res += alphabet.indexOf(answer);
answer = "";
}
}
return Number(res);
}