Skip to main content

코딩테스트 기본 숙지 (JS)

작성일 : 2024.11.01

코테 대비 요점 정리​

입력값​

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');

const input = fs.readFileSync('input.txt', 'utf8').trim().split(' ').map(Number);

정렬​

  • 오름차순 정렬
arrA.sort((a, b) => a - b);
  • 내림차순 정렬
arrA.sort((a, b) => b - a);

문자열​

  • 대문자 변환
str.toUpperCase();
  • 소문자 변환
str.toLowerCase();
  • 숫자->문자열 변환
str.toString(2); //2진수
str.toString(16); //16진수
str.toString(); //10진수 -> 문자열
  • 배열 -> 문자열
arr.join(); // -> '1,2,3,4'
arr.join(""); // -> '1234'
arr.join(":"); // -> '1:2:3:4'
  • replace : 문자열 대치
s.replace("{{", "");

숫자​

  • 10진수 -> 2진수
.toString(2)
  • 내림, 올림, 반올림
Math.floor(num); //내림
Math.ceil(num); // 올림
Math.round(num); // 반올림
  • 루트/제곱
Math.sqrt(num);
Math.pow(num, 2);
  • 최대공약수
function gcd(a, b) {
  if (b === 0) {
    return a;
  }
  // b를 a로 보내고 a % b를 나눈 나머지를 매개변수 b로 넣어서 재귀함수로써 호출
  return gcd(b, a % b);
}
  • 최댓값 / 최솟값
Math.max(num1, num2, ...);
Math.min(num1, num2, ...);
  • 고정소수점
a.toFixed(2);

배열​

  • slice -> 시작 인덱스, 종료 인덱스 / 직접 변경X
result = arr.slice(0, 1);
  • splice -> 시작 인덱스, 제거 갯수, 삽입 요소 목록
arr.splice(1, 2, 20, 30);
arr.splice(1, 2);
arr.splice(1);
  • indexOf : 인덱스 반환
arr.indexOf(2);
arr.indexOf(1, 2); //2번째부터 검색
  • concat : 이어붙이기
elements.concat(elements);
  • filter : 조건에 맞는 요소 거르기
words.filter((word) => word.length > 6);
  • includes : 요소 여부 확인
cache.includes(cities[i]);
  • shift : 앞의 요소 추출 / unshift : 앞에 붙이기
arr.shift();
arr.unshift("a");
  • some : 조건에 맞는 요소 있는지 확인 / every : 모든 요소가 조건에 맞는지 확인
[5, 10, 15].some((item) => item > 10);
[5, 10, 15].every((item) => item > 10);
  • at : 인덱스에 있는 요소 가져오기
stack.at(-1);
  • reduce 사용 예시
const sum = numbers.reduce((acc, num) => acc + num, 0); // 다만 성능면에서 많이 저하됨

Set​

  • Set 객체는 중복되지 않은 유일한 값들의 집합
  • 선언 / 확인 / 추가 / 변경 / 삭제
// 선언
const set1 = new Set([1, 2, 3, 4, 4]); // { 1, 2, 3, 4 }
const set2 = new Set("hello"); // { 'h', 'e', 'l', 'o' }

// 갯수
console.log(set1.size);

// 요소 존재 여부 확인
set.has(2);

// 추가
set.add(1);

// 삭제
set.delete(2);

// 일괄 삭제
set.clear();

//순회
for (const value of set) {
  console.log(value);
}

Map​

  • 선언 / 확인 / 추가 / 변경 / 삭제
// 선언
const map1 = new Map([
  ["key1", "value1"],
  ["key2", "value2"],
]);

// 요소 갯수
console.log(map1.size);

// 추가
map.set("key1", "value1");

// 조회
map.get("key1");

// 삭제
map.delete("key1");

// 일괄 삭제
map.clear();

// 요소 순회
for (const entry of map) {
  console.log(entry);
}
for (const key of map.keys()) {
  console.log(key);
}
for (const value of map.values()) {
  console.log(value);
}
for (const entry of map.entries()) {
  console.log(entry);
}

정규식​

  • 정규식 사용 함수
console.log(/S/.exec("RegExp Study Start"));
// 결과값 : ["S", index:7, input:"RegExp Study Start"]

console.log(/S/.test("RegExp Study"));
// 결과값 : true

console.log("RegExp Study".match(/Study/));
// 결과값 : ["Study", index:7, input:"RegExp Study"]

console.log("RegExp Study".search(/Study/));
// 결과값 : 6

const reg = /[!@#$%^&*(){}~+=1-9\s]/;
const reg2 = /[^a-zA-Z]/;
reg2.test(letter);

node.match(/[A-Za-z]{2}/);
// 1. 기본 패턴
/\d/ // 숫자 하나
/[0-9]/ // 숫자 하나 (위와 동일)
/[a-z]/ // 소문자 하나
/[A-Z]/ // 대문자 하나
/[가-힣]/ // 한글 문자 하나

// 2. 자주 쓰는 수량자
/\d+/ // 숫자 1개 이상
/\d*/ // 숫자 0개 이상
/\d?/ // 숫자 0개 또는 1개
/\d{4}/ // 숫자 정확히 4개
/\d{2,4}/ // 숫자 2개에서 4개

// 3. 경계
/^문자열/ // 문자열로 시작
/문자열$/ // 문자열로 끝남
/^문자열$/ // 정확히 이 문자열만

// 4. 자주 쓰는 조합
/^\d{4}$/ // 4자리 숫자만
/^[A-Z][a-z]*$/ // 대문자로 시작하는 영어단어
/[^0-9]/ // 숫자가 아닌 문자