Coding Test Cheat Sheet
코딩 테스트 치트 시트
문자열 -> 숫자 변환
1. parseInt("123");
2. Number("123");
3. +"123";
4. "123" * 1;
5. "123" / 1;
숫자 -> 문자열 변환
1. String(123);
2. 123 + "";
3. 123.toString();
유리수 정수화
1. Math.floor(3.9); // 3
2. Math.ceil(3.1); // 4
3. Math.round(3.5); // 4
4. ~~3.9; // 3
배열 뒤집기
(1)[(1, 2, 3)].reverse(); // [3,2,1]
문자열 배열화
❌ : "123".forEach(); // Error
🟢 : [..."123"].forEach() // ["1", "2", "3"]
문자열 내 원소 찾기
indexOf, includes, find, findIndex
❌ : "123".indexOf("2") // 1
🟢 : "123".includes("2") // true
🟢 : ["1", "2", "3"].find((el) => el === "2") // "2"
🟢 : ["1", "2", "3"].findIndex((el) => el === "2") // 1
indexOf는 없으면 -1, includes는 true/false, find는 없으면 undefined, findIndex는 없으면 -1
find는 조건에 맞는 첫 번째 원소를 반환, findIndex는 조건에 맞는 첫 번째 원소의 인덱스를 반환
find는 조건에 맞는 원소가 여러 개라도 첫 번째 원소만 반환
findIndex는 조건에 맞는 원소가 여러 개라도 첫 번째 원소의 인덱스만 반환
정규 표현식 활용
"123".match(/2/); // ["2"];
"pypypyyp".match(/py/gi); // ["py", "py", "py", "yp"]
문자열 내 모든 원소 찾기
❌ : "123".filter(); // Error
🟢 : [..."123"].filter(); // ["1", "2", "3"]
🟢 : [1,2,3,4,5].filter((atom) => atom % 2 === 0); // ["1", "2", "3"]
sort() 함수
1. [].sort((a,b) => b-a) // 내리차순 정렬
2. [].sort((a,b) => a-b) // 오름차순 정렬
reduce
메서드
리듀서 함수는 네 개의 인자를 가집니다.
- 누산기 (acc)
- 현재 값 (cur)
- 현재 인덱스 (idx)
- 원본 배열 (src)
arr.reduce(callback[, initialValue])
최소값 찾기
1. Math.min(...[1,2,3,4,5]) // 1
2. Math.min.apply(null, [1,2,3,4,5]) // 1
3. [1,2,3,4,5].reduce((acc, cur) => Math.min(acc, cur)) // 1
4. [1,2,3,4,5].sort((a,b) => a-b)[0] // 1
배열에서 원소 하나 제거
(1)[(1, 2, 3, 4, 5)].splice(1, 1); // [2]
(2)[(1, 2, 3, 4, 5)].filter((el) => el !== 2); // [1, 3, 4, 5]
약수의 개수 구현하기
제곱근이 정수면 약수의 개수는 홀수다.
최대공약수, 최소공배수
최대공약수 = gcd 최소공배수 = lcm
lcm = (num1 * num2) / gcd;
유클리드 호제법
유클리드 호제법의 기본 원리는 num1를 num2로 나눈 나머지를 r이라고 했을 때, GCD(num1, num2) = GCD(num2, r)과 같다는 것이다.
let gcd = (num1, num2) => (num2 > 0 ? gcd(num2, num1 % num2) : num1);
let gcd = (num1, num2) => {
while (num2 > 0) {
let r = num1 % num2;
num1 = num2;
num2 = r;
}
return num1;
};
let lcm = (num1, num2) => (num1 * num2) / gcd(num1, num2);
진법 변환
ParseInt, toString
- 이진수를 10진법으로 변환하기
parseInt(1111, 2) // 15
- 10진수를 이진법으로 변환하기
Number(15).toString(2) // 1111
Combination(조합) 코드 작성
const getCombination = (n, r) => {
let result = [];
if (r === 1) return n.map((v) => [v]);
n.forEach((fixed, index, origin) => {
const slice = origin.slice(index + 1);
const rest = getCombination(slice, r - 1);
const attached = rest.map((v) => [fixed, ...v]);
result.push(...attached);
});
return result;
};
function solution(number) {
let result = 0;
const combination = (current, start) => {
if (current.length === 3) {
result += current.reduce((acc, cur) => acc + cur, 0) === 0 ? 1 : 0;
return;
}
for (let i = start; i < number.length; i++) {
combination([...current, number[i]], i + 1);
}
};
combination([], 0);
return result;
}
아스키 코드 관련 함수
1. charCodeAt()
console.log('A'.charCodeAt()) // 65
2. String.fromCharCode(아스키 번호)
const p1 = String.fromCharCode(65, 66, 67)
console.log(p1) // "ABC"
3. codePointAt()
console.log("A".codePointAt()) // 65
배열 내 중복되는 값 제거하기
1. [...new Set(Array)]
2. array.filter(item, index) => array.indexOf(item) === index);
Set(집합) 기본 사용법
1. const set = new Set();
2. const set = new Set(arr);
3. set.size // 집합의 길이
4. set.add(element) // 원소 추가
5. set.has(element) // return true/false
6. set.delete(element) // 원소 제거
객체의 정렬
JS에서 배열, 객체의 비교
JS에서 배열이나 객체는 주소값을 비교하기 때문에 똑같은 값을 가지는 배열이나 객체라도 다른 주소값을 가지고 있기 때문에 일반적인
===
연산자로는 비교할 수 없다.
1. JSON.stringify(arr1) === JSON.stringify(arr2)
// JSON.stringify를 활용하여 객체나 배열을 비교할 수 있다.
2. arr1.join() === arr2.join()
// join을 활용하여 배열을 비교할 수 있다.