본문 바로가기

Computer Science/알고리즘 & 자료구조

[팁] JS 코딩테스트 기본 문법들

Readline

 

Readline | Node.js v12.22.12 Documentation

Readline# Source Code: lib/readline.js The readline module provides an interface for reading data from a Readable stream (such as process.stdin) one line at a time. It can be accessed using: const readline = require('readline'); The following simple exampl

nodejs.org

 

현대 softeer, 앨리스 코딩, 백준 등에서 직접 readline을 서술해야할 때 다음 문법을 기억해두면 좋다.

 

// 최초 가로열 = n, 세로열 = m, 점의 위치 = k 를 입력받음.
// 이후 k개의 [x,y]를 입력받음.

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let firstline = null;
const lines = [];

rl.on('line', function (x) {
  const datas = x.split(' ').map(x => Number(x));
  
  if (firstline === null) {
    firstline = datas;
  } else {
    lines.push(data);
  }
}).on('close', function () {
    // 문제 풀이 작성
    let answer = ''
    
    // 문제 답안 출력
    console.log(answer)
  process.exit();
});

 

 

배열

- 길이가 n인 배열 선언

const arr = new Array(40).fill(false);

const arr2 = Array.from({length:40}, () => false)

 

- 배열 복사 

const copyArr = [...arr]

 

- 배열 비교

JSON.stringify(arr) === JSON.stringify(copyArr) // true

 

- 배열 중복 제거

let uniqueArr = [...new Set(arr)];

let uniqueArr2 = arr.filter((value, index, self) => self.indexOf(value) === index);

 

- 이중 배열 선언

let arr2 = new Array(3).fill(null).map(() => new Array(3).fill(0));

 

- 이중 배열 복사

let copyArr = arr.map(innerArr => [...innerArr]);

let copyArr2 = JSON.parse(JSON.stringify(arr2D));

 

- 이중 배열 비교

단일과 동일하다.

 

- 이별 배열 중복 제거

let uniqueArr = arr2D.filter((value, index, self) => 
    index === self.findIndex((t) => JSON.stringify(t) === JSON.stringify(value))
);

let uniqueArr2 = Array.from(new Set(arr2D.map(a => JSON.stringify(a))))
                     .map(e => JSON.parse(e));

 

간단한 배열 조작

- 원소 찾기

// 특정 값을 찾기
array.indexof()

// 조건에 맞는 값 찾기
array.find()

// 조건에 맞는 모든 값 찾기 (새로운 배열 반환)
array.filter()

// 원소 위치 찾기
array.findIndex()

 

- 원소 삽입 

// 끝에 원소 추가
array.push()

// 원하는 위치에 원소 추가
array.splice(position,0,ele)

// 첫 위치에 원소 추가
array.unshift()

 

- 원소 삭제

// 끝에 원소 제거
array.pop()

// 중간 원소 제거
array.splice(position,1)

// 처음 원소 제거
array.shift()

 

- 자른 배열 신규 생성 (원본 배열 수정 x)

array.slice()

 

- 배열 정렬 (원본 수정)

// 오름차순
array.sort((a, b) => a - b);

 

원본이 수정되지 않길 바라면, slice나 위에 복제를 한 후 사용하면 좋음

 

간단한 문자열 문법

- 기본 문법

// 길이
str.length()

// 문자열 합치기
st1 + str2

// 문자열 추출
str.slice(start,end)

// 문자열 검색
str.indexOf("World"); 
str.includes("World"); 
str.startsWith("Hello"); 
str.endsWith("!");

// 문자열 대체
const str = "I like apples. Apples are great.";
str.replace("apples", "bananas"); // "I like bananas. Apples are great."
str.replaceAll("apples", "bananas"); // "I like bananas. bananas are great."

// 문자열 분리 및 결합
const str = "a,b,c,d";
const arr = str.split(",");
console.log(arr); // ["a", "b", "c", "d"]
console.log(arr.join("-")); // "a-b-c-d"

// 문자열 대소문자 변환
const str = "JavaScript";
console.log(str.toLowerCase()); // "javascript"
console.log(str.toUpperCase()); // "JAVASCRIPT"

// 문자열 n회 반복
const str = "Hi!";
console.log(str.repeat(3)); // "Hi!Hi!Hi!"

 

 

문자열 조작2 : 정규표현식

몇 가지 문제에서 검사하기 좋다.

 

 

필수로 알아야하는 구현

- dfs / bfs

- 순열 / 조합

- 이진 탐색

- 슬라이딩 윈도우

- 투 포인터

'Computer Science > 알고리즘 & 자료구조' 카테고리의 다른 글

[CRDT] CRDT 심화 정리  (1) 2025.01.21
[구현] JS 순열/ 조합  (0) 2024.11.29
[CRDT] CRDT 기본 원리 정리  (1) 2024.11.11
이분탐색  (1) 2023.06.27
우선순위 큐 와 힙(Heap)  (0) 2023.06.18