코딩테스트 입문
✅
check
reduce
new Set()
slice
와splice
replace
map
,filter
,forEach
정규표현식
Math.sqrt()
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
numbers | result |
---|---|
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] | 5.5 |
[89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] | 94.0 |
function solution(numbers) {
let answer = numbers.reduce((acc, cur) => acc + cur) / numbers.length;
return answer;
}
📌
reduce
: '배열의 모든 값 합산' 활용하기let total = [0, 1, 2, 3].reduce( (acc, cur) => acc + cur, 0);
객체 배열의 경우 반드시 초기 값을 지정해줘야 한다
let initialValue = 0; let sum = [{ x: 1 }, { x: 2 }, { x: 3 }].reduce( (accumulator, currentValue) => accumulator + currentValue.x, initialValue, ); console.log(sum); // 6
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
s1 | s2 | result |
---|---|---|
["a", "b", "c"] | ["com", "b", "d", "p", "c"] | 2 |
["n", "omg"] | ["m", "dot"] | 0 |
function solution(s1, s2) {
let answer = 0;
let commonArr = [];
for( let i= 0; i <= 10; i ++){
s1.includes(s2[i])? commonArr.push(s2[i]) : '';
}
answer = commonArr.length;
return answer;
}
// filter 와 includes 활용
function solution(s1, s2) {
const intersection = s1.filter((x) => s2.includes(x));
return intersection.length;
}
// concat과 set 활용
function solution(s1, s2) {
const concat = [...s1, ...s2]; // 스프래드 연산자: 참조에 의한 복사
const setConcat = Array.from(new Set(concat));
return concat.length - setConcat.length;
}
📌
new set()
: 중복을 허용하지 않는 Collection, 동일한 값은 1개만 저장, 대소문자 구분
Set.add(value)
: 요소 추가const nums = new Set([1, 2, 3]); nums.add(4); // set(4) {1, 2, 3, 4}
Set.delete(value)
: 요소 삭제nums.delete(1); // set(3) {2, 3, 4}
Set.has(value)
: 요소 존재 여부 확인nums.has(3) // true nums.has(1) // false
Set.size
: 요소 갯수 확인console.log(nums.size); // 3
Set.clear(value)
: 요소 전체 삭제nums.clear() // set(0) {}
문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.
strlist | result |
---|---|
["We", "are", "the", "world!"] | [2, 3, 3, 6] |
["I", "Love", "Programmers."] | [1, 4, 12] |
function solution(strlist) {
return strlist.map(el => el.length);
}
📌
map
: 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아새로운 배열을 반환
사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다.
x 좌표와 y 좌표가 모두 양수이면 제1사분면에 속합니다.
x 좌표가 음수, y 좌표가 양수이면 제2사분면에 속합니다.
x 좌표와 y 좌표가 모두 음수이면 제3사분면에 속합니다.
x 좌표가 양수, y 좌표가 음수이면 제4사분면에 속합니다.
x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.
dot | result |
---|---|
[2, 4] | 1 |
[-7, 9] | 2 |
function solution(dot) {
let answer = 0;
if( dot[0] > 0 && dot[1] > 0){
return answer = 1;
}
if( dot[0] < 0 && dot[1] > 0){
return answer = 2;
}
if( dot[0] < 0 && dot[1] < 0){
return answer = 3;
}
else return answer = 4;
return answer;
}
// 삼항연산자로 정리
function solution(dot) {
return dot[0] > 0 ? dot[1] > 0 ? 1 : 4 : dot[1] > 0 ? 2 : 3;
}
function solution(dot) {
// 구조분해
const [num,num2] = dot;
const check = num * num2 > 0; // x 가 양수인 경우
// 삼항연산자로 구분
return num > 0 ? (check ? 1 : 4) : (check ? 3 : 2);
}
정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.
numbers | num1 | num2 | result |
---|---|---|---|
[1, 2, 3, 4, 5] | 1 | 3 | [2, 3, 4] |
[1, 3, 5] | 1 | 2 | [3, 5] |
function solution(numbers, num1, num2) {
return numbers.slice(num1, num2+1)
}
function solution(numbers, num1, num2) {
return numbers.splice(num1, num2-num1+1);
}
📌
slice
와splice
slice
- 원본 배열에 영향을 주지 않고 얕은 복사본을 새로운 배열 객체로 반환
arr.slice([begin[, end]])
begin
: 시작 indexend
: optional, 종료 index( 본인 제외 ex: 3일 경우 index 2까지만 수행 )음수의 경우
: 배열의 끝에서 부터 index 계산,end
지정하지 않을 경우array.length
로 지정 됨- 반환 값: 추출한 요소를 포함한 새로운 배열
splice
- 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
start
: 시작지점deleteCount
: 지울 요소 개수item1, item2 ...
: optional, 배열에 추가할 요소 / 지정하지 않을 경우 요소 제거만 수행- 반환 값: 제거된 요소를 담은 배열, 아무 것도 제거하지 않았을 경우 빈 배열 반환
영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
my_string | result |
---|---|
"bus" | "bs" |
"nice to meet you" | "nc t mt y" |
function solution(my_string) {
let vowels = ['a', 'e', 'i', 'o', 'u'];
let string = [];
let exceptVowels = [];
string = Array.from(my_string);
string.filter(el => vowels.includes(el) ? '': exceptVowels.push(el))
return exceptVowels.join('');
}
function solution(my_string) {
// a, e, i, o, u 중 일치하는([aeiou]) 모든 문자( /g)를 빈 문자('') 로 바꾼다(.replace)
return my_string.replace(/[aeiou]/g, '');
}
📌
replace
replace(pattern, replacement)
pattern
부분은 대부분 정규식으로 많이 사용됨, 바꿀 부분replacement
: 대체될 문자열이나 함수- 반환 값:
pattern
에 해당하는 모든 부분이replacement
로 대체된 새 문자열
📌
정규 표현식
참고: https://subtlething.tistory.com/56
머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.
array | height | result |
---|---|---|
[149, 180, 192, 170] | 167 | 3 |
[180, 120, 140] | 190 | 0 |
function solution(array, height) {
let count = 0;
for ( let i = 0; i < array.length; i ++){
if(array[i] > height) {
count ++
}
}
return count;
}
function solution(array, height) {
// filter: 새로운 배열을 반환하므로 배열을 따로 선언하지 않아도 된다.
// return array.filter(item => item > height).length 이렇게도 가능 !
let answer = array.filter(item => item > height);
return answer.length;
}
// forEach
function solution(array, height) {
let result = 0;
array.forEach((arr) => height < arr && result++);
return result;
}
문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.
str1 | str2 | result |
---|---|---|
"ab6CDE443fgh22iJKlmn1o" | "6CD" | 1 |
"ppprrrogrammers" | "pppp" | 2 |
"AbcAbcA" | "AAA" | 2 |
function solution(str1, str2) {
return str1.indexOf(str2) === -1 ? 2 : 1;
}
function solution(str1, str2) {
return str1.split(str2).length > 1 ? 1 : 2
}
function solution(str1, str2) {
return str1.includes(str2) ? 1 : 2;
}
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.
n | result |
---|---|
144 | 1 |
976 | 2 |
function solution(n) {
return Math.sqrt(n)%1 === 0 ? 1 : 2
}
📌
Math.sqrt
Math.sqrt(x)
- 반환 값: x의 제곱근을 반환( √x ) / 음수일 경우
NaN
반환
📌
Number.isInteger()
: 주어진 값이 정수인지 판별하여 Boolean값을 반환
순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.
n | result |
---|---|
20 | 6 |
100 | 9 |
function solution(n) {
let count = 0;
for (let i = 1; i <= n; i ++){
if( n%i === 0){
count ++
}
}
return count;
}