“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”
- Frederick Philips Brooks
Mythical Man-Month 저자
코딩 테스트 입문
최댓값 만들기
문제 설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
제한사항
- -10,000 ≤ numbers의 원소 ≤ 10,000
- 2 ≤ numbers 의 길이 ≤ 100
입출력예
numbers | result |
[1,2,-3,4,-5] | 15 |
[0,-31,24,10,1,9] | 240 |
[10,20,30,40,5,5,20,5] | 600 |
입출력설명
- 두 수의 곱중 최댓값은 -3 * -5 = 15 입니다.
- 두 수의 곱중 최댓값은 10 * 24 = 240 입니다.
- 두 수의 곱중 최댓값은 20 * 30 = 600 입니다.
출력
function solution(numbers) {
var answer = 0;
var maxProduct = Number.NEGATIVE_INFINITY;
for (var i = 0; i < numbers.length; i++) {
for (var j = i + 1; j < numbers.length; j++) {
var product = numbers[i] * numbers[j];
if (product > maxProduct) {
maxProduct = product;
}
}
}
return maxProduct;
}
answer 변수는 결과를 저장할 변수로 초기값을 0으로 설정합니다.
maxProdct 변수는 최대값을 저장할 변수로 초기값을 음수 무한대로 설정합니다.
이중 for문을 사용해 모든 가능한 두 수의 곱을 계산하고 numbers배열의 인덱스 i를 순회해 두 번째 for문i다음 인덱스부터 끝까지 j를 순회합니다. 이렇게 하면 모든 가능한 두 수의 조합을 비교할 수 있습니다.
최댓값 만들기
문제 설명
정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 10,000
- 1 ≤ numlist의 크기 ≤ 100
- 1 ≤ numlist의 원소 ≤ 100,000
입출력예
n | numlist | result |
3 | [4,5,6,7,8,9,10,11,12] | [6,9,12] |
5 | [1,9,3,10,13,5] | [10,5] |
12 | [2,100,120,600,12,12] | [120,600,12,12] |
입출력설명
- numlist에서 3의 배수만을 남긴 [6, 9, 12]를 return합니다.
- numlist에서 5의 배수만을 남긴 [10, 5]를 return합니다.
- numlist에서 12의 배수만을 남긴 [120, 600, 12, 12]를 return합니다.
출력
function solution(n, numlist) {
var answer = [];
for (var i = 0; i < numlist.length; i++) {
var num = numlist[i];
if (num % n === 0) {
answer.push(num);
}
}
return answer;
}
정수 n과 정수 배열 numlist가 주어질 때, numlist에서 n의 배수가
아닌 수들을 제거한 배열을 반환하는 것입니다. 우선 함수 solution 을 정의합니다.
이 함수는 n과 numlist 를 매개변수로 받고 answer 라는 빈 배열을 선언합니다. 이 배열에서는 n의 배수가 아닌 수들을 저장할 것입니다. 그 다음 반복문을 사용해 numlist 배열을 순회하고 배열의 각 요소를 num 이라는 변수에 저장합니다.
그리고 num 이 n의 배수가 아닌 경우에만 answer 배열에 추가합니다. 배수 여부를 확인하기 위해 %연산자를 사용해 num 을 n으로 나눈 나머지가 0인지 확인합니다.
가장 큰 수 찾기
문제 설명
정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 ≤ array의 길이 ≤ 100
- 0 ≤ array 원소 ≤ 1,000
- array에 중복된 숫자는 없습니다.
입출력예
array | result |
[1,8,3] | [8,1] |
[9,10,11,8] | [11,2] |
입출력설명
- 1, 8, 3 중 가장 큰 수는 8이고 인덱스 1에 있습니다.
- 9, 10, 11, 8 중 가장 큰 수는 11이고 인덱스 2에 있습니다.
출력
function solution(array) {
var max = array[0]; // 가장 큰 수를 저장하는 변수를 초기화합니다.
var maxIndex = 0; // 가장 큰 수의 인덱스를 저장하는 변수를 초기화합니다.
for (var i = 1; i < array.length; i++) {
if (array[i] > max) { // 현재 요소가 최댓값보다 큰 경우
max = array[i]; // 최댓값을 갱신합니다.
maxIndex = i; // 최댓값의 인덱스를 갱신합니다.
}
}
return [max, maxIndex]; // 최댓값과 인덱스를 담은 배열을 반환합니다.
}
배열 array에서 가장 큰 수와 그 수의 인덱스를 찾는 함수 solution을 구현한것입니다.
주어진 배열에서 가장 큰 수를 찾기 위해 반복문을 사용합니다. 초기에 가장 큰 수를 mas 변수에 배열의 첫 번째 요소로 설정하고, 해당 요소의 인덱스를 maxIndex 변수에 0으로 설정합니다.
그 후, 반복문을 배열의 두 번째 요소부터 마지막 요소까지 순회합니다. 각 요소를 순회하면서 현재 요소가 max 보다 큰 경우 max 값을 해당 요소로 갱신하고 maxIndex 값을 현재 인덱스로 갱신합니다.
최댓값 만들기
문제 설명
문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 < my_string의 길이 < 100
- 0 ≤ num1, num2 < my_string의 길이
- my_string은 소문자로 이루어져 있습니다.
- num1 ≠ num2
입출력예
my_string | num1 | num2 | result |
"hello" | 1 | 2 | "hlelo" |
"I love you" | 3 | 6 | "I I veoyou" |
입출력설명
- "hello"의 1번째 인덱스인 "e"와 2번째 인덱스인 "l"을 바꾸면 "hlelo"입니다.
- "I love you"의 3번째 인덱스 "o"와 " "(공백)을 바꾸면 "I l veoyou"입니다.
출력
function solution(my_string, num1, num2) {
var strArray = my_string.split(''); // 문자열을 배열로 변환합니다.
// 두 인덱스에 해당하는 문자를 서로 바꿉니다.
var temp = strArray[num1];
strArray[num1] = strArray[num2];
strArray[num2] = temp;
var result = strArray.join(''); // 배열을 다시 문자열로 변환합니다.
return result;
}
my_string 과 인덱스 num1, num2가 주어졌을 때, 해당 인덱스에 해당하는 문자를 서로 바꾸는 함수 solution 을 구현한 것입니다.
먼저 주어진 문자열 my_string 을 split 메서드를 사용해 배열로 변환하고 문자열의 각 문자가 배열의 요소로 들어가게 합니다. 그 다음 두 인덱스 num1 과 num2에 해당하는 문자를 서로 바꿉니다. 이를 위해 임시 변수 temp 를 사용해 두 문자를 교환합니다. 마지막으로 join 메서드를 사용해 배열을 다시 문자열로 변환합니다.