배열의 길이를 2의 거듭제곱으로 만들기
문제
정수 배열 arr
이 매개변수로 주어집니다. arr
의 길이가 2의 정수 거듭제곱이 되도록 arr
뒤에 정수 0을 추가하려고 합니다. arr
에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요.
- 제한사항
- 1 ≤
arr
의 길이 ≤ 1,000 - 1 ≤
arr
의 원소 ≤ 1,000
- 1 ≤
소스 코드
const solution = arr => {
let length = arr.length;
let answer = arr;
let count = 0;
while (true) {
length = Math.round(length / 2);
if (length === 1) {
break;
}
count++;
}
if (2 ** count < arr.length) {
for (let i = arr.length; i < 2 ** (count + 1); i++) {
answer.push(0);
}
}
return answer;
};
배열 비교하기
문제
이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.
두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다.
배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다.
두 정수 배열 arr1
과 arr2
가 주어질 때, 위에서 정의한 배열의 대소관계에 대하여 arr2
가 크다면 -1, arr1
이 크다면 1, 두 배열이 같다면 0을 return 하는 solution 함수를 작성해 주세요.
- 제한사항
- 1 ≤
arr1
의 길이 ≤ 100 - 1 ≤
arr2
의 길이 ≤ 100 - 1 ≤
arr1
의 원소 ≤ 100 - 1 ≤
arr2
의 원소 ≤ 100
- 1 ≤
- 문제에서 정의한 배열의 대소관계가 일반적인 프로그래밍 언어에서 정의된 배열의 대소관계와 다를 수 있는 점에 유의해주세요.
소스 코드
const solution = (arr1, arr2) => {
if (arr1.length > arr2.length) {
return 1;
} else if (arr1.length < arr2.length) {
return -1;
} else {
const arr1Sum = arr1.reduce((acc, cur) => acc + cur, 0);
const arr2Sum = arr2.reduce((acc, cur) => acc + cur, 0);
if (arr1Sum > arr2Sum) {
return 1;
} else if (arr1Sum < arr2Sum) {
return -1;
} else {
return 0;
}
}
};
문자열 묶기
문제
문자열 배열 strArr
이 주어집니다. strArr
의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요.
- 제한사항
- 1 ≤
strArr
의 길이 ≤ 100,000- 1 ≤
strArr
의 원소의 길이 ≤ 30 strArr
의 원소들은 알파벳 소문자로 이루어진 문자열입니다.
- 1 ≤
- 1 ≤
소스 코드
const solution = (strArr) => {
const arr = {};
strArr.map(str => {
if (!arr[str.length]) {
arr[str.length] = [];
}
arr[str.length].push(str);
});
return Math.max(...Object.values(arr).map(arr => arr.length));
};
배열의 길이에 따라 다른 연산하기
문제
정수 배열 arr
과 정수 n
이 매개변수로 주어집니다. arr
의 길이가 홀수라면 arr
의 모든 짝수 인덱스 위치에 n
을 더한 배열을, arr
의 길이가 짝수라면 arr
의 모든 홀수 인덱스 위치에 n
을 더한 배열을 return 하는 solution 함수를 작성해 주세요.
- 제한사항
- 1 ≤
arr
의 길이 ≤ 1,000 - 1 ≤
arr
의 원소 ≤ 1,000 - 1 ≤
n
≤ 1,000
- 1 ≤
소스 코드
const solution = (arr, n) => {
if (arr.length % 2 === 0) {
return arr.map((item, index) => index % 2 === 0 ? item : item + n);
} else {
return arr.map((item, index) => index % 2 === 1 ? item : item + n);
}
};
뒤에서 5등까지
문제
정수로 이루어진 리스트 num_list
가 주어집니다. num_list
에서 가장 작은 5개의 수를 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
- 제한사항
- 6 ≤
num_list
의 길이 ≤ 30 - 1 ≤
num_list
의 원소 ≤ 100
- 6 ≤
소스 코드
const solution = (numList) => {
return numList.sort((a, b) => a - b)
.filter((num, index) => index < 5);
};
Ghost