본문으로 건너뛰기

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 메서드

리듀서 함수는 네 개의 인자를 가집니다.

  1. 누산기 (acc)
  2. 현재 값 (cur)
  3. 현재 인덱스 (idx)
  4. 원본 배열 (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을 활용하여 배열을 비교할 수 있다.

문자열이 특정 문자열 포함 여부 판단하기