Q. 머쓱이보다 키 큰 사람
머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.
🚫제한 사항
1 ≤ array의 길이 ≤ 100
1 ≤ height ≤ 200
1 ≤ array의 원소 ≤ 200
❗입출력 예
array | height | result |
[149, 180. 192, 170] | 167 | 3 |
[180, 120, 140] | 190 | 0 |
😀 내가 푼 답
function solution(array, height) {
return array.filter(x => x > height).length
}
😊 문제풀이 답안 OR 다른사람들 답안
// map
function solution(array, height) {
let result = 0;
array.map((arr) => height < arr && result++);
return result;
}
// for
function solution(array, height) {
var answer = 0;
for (let i = 0; i < array.length; i++) {
if (array[i] > height) {
answer++
}
}
return answer;
}
Q. 배열 두배 만들기
정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
🚫제한 사항
-10,000 ≤ numbers의 원소 ≤ 10,000
1 ≤ numbers의 길이 ≤ 1,000
❗입출력 예
array | result |
[1, 2, 3, 4, 5] | [2, 4, 6, 8, 10] |
[1, 2, 100, -99, 1, 2, 3] | [2, 4, 200, -198, 2, 4, 6] |
😀 내가 푼 답
function solution(numbers) {
return numbers.map(x => x * 2)
}
😊 문제풀이 답안 OR 다른사람들 답안
function solution(numbers) {
return numbers.reduce((a, b) => [...a, b * 2], []);
}
- reduce()
- 배열의 각 요소에 대해 주어진 함수를 실행하고, 하나의 결과값을 반환시킴
- arr.reduce(callback[, initialValue])
- callback
✔ 배열의 각 요소에 대해 실행할 함수
✔ 네가지; 인수를 받음- accumulator
✔ 누산기는 콜백의 반환값을 누적함
✔ 콜백의 이전 리턴값 또는 콜백의 첫번째 호출이면서 initialValue를 제공한 경우에는 initialValue의 값'
✔ callback함수의 반환값은 accumulator에 할당되고 순회중 계속 누적되어 최종적으로 하나의 값을 리턴함 - currentValue
✔ 배열의 현재 요소 - currentIndex
✔ 배열의 현재 요소의 인덱스
✔ initialValue를 제공한 경우 0, 아니면 1부터 시작함 - array
✔ reduce()를 호출한 배열
- accumulator
- initialValue
✔ 콜백함수의 최초 호출에서 첫 번째 인수에 제공하는 값
✔ 초기값을 제공하지 않으면 배열의 첫 번째 요소를 사용함
✔ 빈 배열에서 초기값 없이 호출하면 오류가 발생함
- callback
Q. 삼각형의 완성조건(1)
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
❌ 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
🚫제한 사항
sides의 원소는 자연수입니다.
sides의 길이는 3입니다.
1 ≤ sides의 원소 ≤ 1,000
❗입출력 예
sides | result |
[1, 2, 3] | 2 |
[3, 6, 2] | 2 |
[199, 72, 222] | 1 |
😀 내가 푼 답
function solution(sides) {
sides.sort((x, y) => y - x);
return sides[0] < sides[1] + sides[2] ? 1 : 2;
}
😊 문제풀이 답안 OR 다른사람들 답안
function solution(sides) {
sides.sort((a, b) => a - b);
return ( sides.at(-1) < sides[0] + sides[1] ) ? 1 : 2;
};
- at()
- 정수 값을 받아 배열에서 해당 값에 해당하는 인덱스 요소를 반환함
- 양수와 음수 모두 지정할 수 있고, 음수 값의 경우 배열의 뒤에서부터 인덱스를 셈
- at()메서드를 사용하여 조금더 간략하게 표현할 수 있음
ex) 맨 마지막 요소 반환방법
arr[arr.lenght - 1] = arr.at(-1) - at(index)
- index
✔ 배열에서 반환할 요소의 인덱스
✔ 음수 값을 지정할 경우 배열의 마지막을 기준으로 한 인덱스
=> 배열 앞 대신 끝에서부터 위치를 계산함
✔ 주어진 인덱스가 배열에 없으면 undefined를 반환함
- index
Q. 배열의 중앙값 구하기
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 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 |
😀 내가 푼 답
function solution(array) {
array.sort((x, y) => x - y);
return array[Math.floor(array.length / 2)];
}
😊 문제풀이 답안 OR 다른사람들 답안
function solution(array) {
return array.sort((a, b) => a - b)[parseInt(array.length / 2)];
}
Q. 짝수는 싫어요
정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.
🚫제한 사항
1 ≤ n ≤ 100
❗입출력 예
n | result |
10 | [1, 3, 5, 7, 9] |
15 | [1, 3, 5, 7, 9, 11, 13, 15] |
😀 내가 푼 답
function solution(n) {
let arr = [];
for (let i = 1; i <= n; i += 2) {
arr.push(i);
}
return arr;
}
😊 문제풀이 답안 OR 다른사람들 답안
function solution(n) {
return Array(n).fill(1).map((v, i) => v + i).filter(v => v % 2 !== 0);
}
- Array()
- 새로운 배열 객체를 생성할 때 사용함
- fill()
- 배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로 채워짐
- arr.fill(value[, start[, end]})
- value: 배열을 채울값
- start: 시작 인덱스, 기본값은 0
- end: 끝 인덱스, 기본값은 this.length
Q. 배열의 유사도
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
🚫제한 사항
1 ≤ s1, s2의 길이 ≤ 100
1 ≤ s1, s2의 원소의 길이 ≤ 10
s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
s1과 s2는 각각 중복된 원소를 갖지 않습니다.
❗입출력 예
s1 | s2 | result |
["a", "b", "c"] | ["com", "b", "d", "p", "c"] | 2 |
["n", "omg"] | ["m", "dot"] | 0 |
😀 내가 푼 답
function solution(s1, s2) {
return s1.filter((idx) => s2.includes(idx)).length;
}
😊 문제풀이 답안 OR 다른사람들 답안
// set1
function solution(s1, s2) {
let arr1 = [...s1,...s2]
let arr2 = Array.from(new Set(arr1))
return arr1.length-arr2.length
}
// set2
const solution = (s1, s2) => s1.length + s2.length - Array.from(new Set(s1.concat(s2))).length;