- Frederick Philips Brooks
Mythical Man-Month 저자
주사위의 개수
문제
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.
정답풀이
function solution(box, n) {
let answer = 1;
for (v of box) answer *= Math.floor(v / n);
return answer;
}
함수는 결과를 저장하기 위한 변수 answer를 1로 초기화합니다.
다음으로, box 배열을 순회하는 반복문을 실행합니다. 반복문에서는 현재 요소 v를 n으로 나눈 몫을 answer에 곱합니다. Math.floor() 함수를 사용하여 몫을 정수로 변환합니다.
반복문이 모두 실행된 후 최종적으로 answer 값을 반환합니다. 이 값은 box 배열의 각 요소를 n으로 나눈 몫을 모두 곱한 결과를 나타냅니다.
최댓값 만들기 (2)
문제
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
문제풀이
function solution(numbers) {
let max = numbers[0] * numbers[1];
for(let i = 0; i < numbers.length - 1; i++){
const first = numbers[i];
for(let j = i + 1; j < numbers.length; j++){
const second = numbers[j];
if(max < first * second){
max = first * second;
}
}
}
return max;
}
함수는 첫 번째 요소와 두 번째 요소를 곱한 값을 최댓값으로 초기화합니다.
다음으로, 중첩된 반복문을 사용하여 배열 numbers의 모든 요소 쌍에 대해 최댓값을 찾습니다. 바깥쪽 반복문은 첫 번째 요소를 선택하고, 안쪽 반복문은 바깥쪽 반복문 다음 인덱스부터 시작하여 두 번째 요소를 선택합니다.
안쪽 반복문에서는 선택한 두 요소를 곱한 값이 현재의 최댓값보다 큰지 확인합니다. 만약 더 크다면 최댓값을 해당 값으로 업데이트합니다.
반복문이 모두 실행된 후 최종적으로 max 값을 반환합니다. 이 값은 배열 numbers에서 가능한 모든 요소 쌍의 곱 중 가장 큰 값을 나타냅니다.
n의 배수 고르기
문제
정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.
정답풀이
function solution(n, numlist) {
let answer = [];
for(let i = 0; i < numlist.length; i++) {
if(numlist[i] % n === 0) {
answer.push(numlist[i]);
}
}
return answer;
}
함수는 결과를 저장하기 위한 빈 배열 answer를 선언합니다.
다음으로, numlist 배열을 순회하는 반복문을 실행합니다. 반복문에서는 현재 요소 numlist[i]를 n으로 나눈 나머지가 0인지 확인합니다. 나머지가 0이라면 해당 요소를 answer 배열에 추가합니다.
반복문이 모두 실행된 후 최종적으로 answer 배열을 반환합니다. 이 배열은 numlist 배열에서 n으로 나누어 떨어지는 모든 요소들로 구성된 결과를 나타냅니다.
문자열 정렬하기 (1)
문제
문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.
정답풀이
function solution(my_string) {
const regex = /^[0-9]+$/;
let ans = [];
for(let i = 0; i < my_string.length; i++){
if(regex.test(my_string[i])){
ans.push(Number(my_string[i]));
}
}
return ans.sort((a,b) => a - b);
}
함수는 숫자로 이루어진 문자열을 필터링하고, 정렬된 숫자 배열을 반환합니다.
먼저, 정규식 객체 regex를 생성하여 숫자로 이루어진 문자열을 판별하기 위한 정규식을 설정합니다. 정규식은 숫자로 시작하고 끝나는 문자열을 나타냅니다.
다음으로, 결과를 저장하기 위한 빈 배열 ans를 선언합니다.
my_string 문자열을 순회하는 반복문을 실행합니다. 반복문에서는 현재 인덱스에 해당하는 문자가 regex 패턴에 일치하는지 확인합니다. 일치한다면 해당 문자를 숫자로 변환하여 ans 배열에 추가합니다.
반복문이 모두 실행된 후 최종적으로 ans 배열을 오름차순으로 정렬하여 반환합니다. 이 배열은 my_string 문자열에서 추출한 숫자들로 이루어진 정렬된 결과를 나타냅니다.