QUOTE THE DAY
“ 당신이 6개월 이상 한 번도 보지 않은 코드는 다른 사람이 다시 만드는 게 훨씬 더 나을 수 있다. ”
-
이글슨 (Eagleson)
반응형
코딩테스트 입문 Day 3 사칙연산, 배열, 수학
출처 : https://programmers.co.kr/
나머지 구하기
문제
정수 num1, num2가 매개변수로 주어질 때, num1를 num2로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 0 < num1 ≤ 100
- 0 < num2 ≤ 100
입출력 예
num1 | num2 | result |
3 | 2 | 1 |
10 | 5 | 0 |
입출력 예 설명
입출력 예 #1
- num1이 3, num2가 2이므로 3을 2로 나눈 나머지 1을 return 합니다.
입출력 예 #2
- num1이 10, num2가 5이므로 10을 5로 나눈 나머지 0을 return 합니다.
solution.js
function solution(num1, num2) {
var answer = num1 % num2;
return answer;
}
- num1을 num2로 나눈 나머지를 answer 변수에 저장합니다. % 연산자는 나머지를 계산하는 연산자입니다.
- 계산된 answer 값을 반환합니다.
중앙값 구하기
문제
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.
제한사항
- array의 길이는 홀수입니다.
- 0 < array의 길이 < 100
- -1,000 < array의 원소 < 1,000
입출력 예
array | result |
[1, 2, 7, 10, 11] | 7 |
[9, -1, 0] | 0 |
입출력 예 설명
입출력 예 #1
- 본문과 동일합니다.
입출력 예 #2
- 9, -1, 0을 오름차순 정렬하면 -1, 0, 9이고 가장 중앙에 위치하는 값은 0입니다.
solution.js
function solution(array) {
array.sort((a, b) => a - b);
if (array.length % 2 === 1) {
return array[Math.floor(array.length / 2)];
}
const midIndex = array.length / 2;
return (array[midIndex - 1] + array[midIndex]) / 2;
}
- array 배열을 sort 함수를 사용하여 오름차순으로 정렬합니다. 정렬된 배열은 원래 배열에 영향을 주지 않고 새로운 배열을 반환합니다.
- 만약 array의 길이가 홀수인 경우, 즉 array.length % 2 === 1인 경우:
- Math.floor(array.length / 2)를 사용하여 중앙 인덱스를 계산합니다. 홀수 길이의 배열에서 중앙값은 정확히 중앙에 위치한 요소입니다.
- 해당 중앙 인덱스에 해당하는 값을 반환합니다.
- 만약 array의 길이가 짝수인 경우, 즉 array.length % 2 === 0인 경우:
- array.length / 2를 사용하여 중앙에 위치하는 두 요소의 인덱스를 계산합니다. 짝수 길이의 배열에서 중앙값은 중앙에 위치한 두 요소의 평균값입니다.
- 중앙에 위치하는 두 요소의 값을 더한 후, 2로 나눈 평균값을 반환합니다.
최빈값 구하기
문제
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한사항
- 0 < array의 길이 < 100
- 0 ≤ array의 원소 < 1000
입출력 예
array | result |
[1, 2, 3, 3, 3, 4] | 3 |
[1, 1, 2, 2] | -1 |
[1] | 1 |
입출력 예 설명
입출력 예 #1
- [1, 2, 3, 3, 3, 4]에서 1은 1개 2는 1개 3은 3개 4는 1개로 최빈값은 3입니다.
입출력 예 #2
- [1, 1, 2, 2]에서 1은 2개 2는 2개로 최빈값이 1, 2입니다. 최빈값이 여러 개이므로 -1을 return 합니다.
입출력 예 #3
- [1]에는 1만 있으므로 최빈값은 1입니다.
solution.js
function solution(array) {
const frequency = {};
for (let i = 0; i < array.length; i++) {
if (frequency[array[i]] === undefined) {
frequency[array[i]] = 1;
} else {
frequency[array[i]]++;
}
}
let maxCount = 0;
let mode = [];
for (const key in frequency) {
const count = frequency[key];
if (count > maxCount) {
maxCount = count;
mode = [parseInt(key)];
} else if (count === maxCount) {
mode.push(parseInt(key));
}
}
if (mode.length > 1) {
return -1;
}
return mode[0];
}
- frequency라는 빈 객체를 생성합니다. 이 객체는 각 값의 등장 횟수를 기록하기 위해 사용됩니다.
- 반복문을 통해 배열 array를 순회하면서 각 요소의 등장 횟수를 frequency 객체에 기록합니다.
- 만약 frequency 객체에 해당 요소가 없다면, 등장 횟수를 1로 설정합니다.
- 이미 frequency 객체에 해당 요소가 있다면, 등장 횟수를 1 증가시킵니다.
- maxCount 변수를 0으로 초기화합니다. 이 변수는 가장 많이 등장한 횟수를 저장합니다.
- mode라는 빈 배열을 생성합니다. 이 배열은 최빈값을 저장하기 위해 사용됩니다.
- 객체 frequency를 순회하면서 최빈값을 찾습니다.
- 각 키(key)에 해당하는 등장 횟수(count)를 가져옵니다.
- 만약 count가 현재까지의 최빈값 maxCount보다 크다면, maxCount를 count로 업데이트하고 mode 배열에 현재 키(key)를 넣어줍니다.
- 만약 count가 maxCount와 같다면, mode 배열에 현재 키(key)를 추가합니다.
- mode 배열의 길이가 1보다 크다면, 최빈값이 여러 개이므로 -1을 반환합니다.
- 그렇지 않은 경우, mode 배열의 첫 번째 요소를 반환합니다. 이 값은 최빈값입니다.
짝수는 싫어
문제
정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 100
입출력 예
n | result |
10 | [1, 3, 5, 7, 9] |
15 | [1, 3, 5, 7, 9, 11, 13, 15] |
입출력 예 설명
입출력 예 #1
- 10 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9]를 return합니다.
입출력 예 #2
- 15 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9, 11, 13, 15]를 return합니다.
solution.js
function solution(n) {
var answer = [];
for (let i = 1; i <= n; i += 2) {
answer.push(i);
}
return answer;
}
- answer라는 빈 배열을 생성합니다. 이 배열은 결과값을 저장하기 위해 사용됩니다.
- 반복문을 통해 i를 1부터 n까지 2씩 증가시키면서 순회합니다. (i += 2는 i를 2씩 증가시키는 것을 의미합니다.)
- 각 반복에서 i 값을 answer 배열에 추가합니다.
- 반복문이 종료되면, 완성된 answer 배열을 반환합니다.
반응형