IT/알고리즘, 코딩테스트

(JavaScript) 코테를 위한 기본적으로 알아야할 문법

DevHam94 2023. 8. 3. 20:59

# 빠른 출력을 할려면

 

코딩테스트에서는 시간이 제한되어있는데. 많은경우 시간초과가 되게된다. 

예로 라인마다 코드를 읽어오게되면 라인이 많을경우 많은 시간이 걸리게된다. 

메모리를 많이 사용하지만 출력시간을 빠르게 할 수 있다. 한꺼번에 모아뒀다가 출력하는 방식이다. 

(자바에서는 BufferedReader가 이걸위해 사용된다.)

 

let answer = '';

/* 
여러 출력 결과를 한 줄에 하나씩 출력하는게 아니라
하나의 문자열에 결과를 저장해서 한꺼번에 출력해주는거다.
*/
for (let i = 1; i <= 100; i++) {
	answer += i + '\n'; 
}

console.log(answer);

 

# fs 모듈

 - 텍스트 형식으로 데이터가 입력된다면. 파일 시스템 모듈을 사용한다. 

 ex) /dev/stdin 파일의 텍스트를 읽어온다면 이렇게 작성한다. 

 모든 텍스트를 읽어와 줄바꿈 기호를 기준으로 구분해서 리스트로 변환

// readline 모듈보다는 fs를 이용해 파일 전체를 읽어 들여 처리한다. 
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
// let input = fs.readFileSync('input.txt').toString().split('\n');

console.log(input);


// 만약 이런 텍스트 데이터가 주어진다면
input.txt
123
456
789 1234

// 출력될때에는 이런식으로 출력되게된다. 
['123', '456', '789 1234']

 

// readline 모듈

 파일 시스템을 사용하지 못할때는 한 줄씩 입력을 받아서 처리하는 readline모듈을 사용할 수 있다. 

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

let input = [];
rl.on('line', function(line) {
	// 콘솔 입력 창에서 줄바꿈(Enter)를 입력할 때마다 호출
    input.push(line);
}).on('close', function() {
	// 콘솔 입력 창에서 Ctrl + C 혹은 Ctrl + D를 입력하면 호출(입력종료)
    console.log(input);
    process.exit();
});

 

# Array.prototype.reduce()

 - 배열의 모든 원소에 대해 특정한 연산을 순차적으로 적용할 때 reduce를 사용한다. 

/* 
reduce() 메서드는 배열의 각 요소에 대해 reducer 함수를 실행한 뒤에 하나의 결과를 반환합니다.
reducer의 형태: (accumulator, currentValue) => (반환값)
- 배열의 각 원소를 하나씩 확인하며, 각 원소는 currentValue에 해당합니다.
- 반환값은 그 이후의 원소에 대하여 accumulator에 저장됩니다.
*/

let data = [5, 2, 9, 8, 4];

// minValue 구하기 예제
let minValue = data.reduce((a,b) => Math.min(a, b));
console.log(minValue); // 2

// 원소의 합계 구하기 예제
let summary = data.reduce((a, b) => a + b);
console.log(summary); // 28

 

# 배열 초기화 방법

 - 알고리즘 문제를 풀때 배열 초기화하기위해 자주 사용되는 방식이다 

// 직접 값을 설정하여 초기화
let arr = [8, 1, 4, 5, 7];

// 길이가 5이고 모든 원소의 값이 0인 배열 초기화
let arr = new Array(5).fill(0);

 

# 집합 자료형

 - 특정한 원소의 등장 여부를 파악할 때 효과적

 - 중복된 값을 넣지 못한다. 

let mySet = new Set(); // 집합 객체 생성

// 여러 개의 원소 삽입
mySet.add(3);
mySet.add(5);
mySet.add(7);
mySet.add(3);

console.log(`원소의 개수: ${mySet.size}`);
console.log(`원소 7을 포함하고 있는가? ${mySet.has(7)}`);

// 원소 5 제거
mySet.delete(5);

// 원소를 하나씩 출력
for (let item of mySet) console.log(item);

 

 

# 특정 소수자리에서 반올림

 - 실수를 출력할 때 원하는 소숫자리에서 반올림한다. 

// 특정 실수에 대하여 toFixed()를 이용해 소수점 아래 둘째 자리까지 출력
let x = 123.456
console.log(x.toFixed(2));

 

# 이스케이프 시퀀스(Escape Sequence)

 - 예약 문자 혹은 특수 문자를 출력하기 위해 사용할 수 있다.

시퀀습 문자
\t
\\ 역 슬래시
\" 큰 따옴표
\' 작은 따옴표

(ex) console.log("그는 \"비범함\"을 보였다.");

 

'IT > 알고리즘, 코딩테스트' 카테고리의 다른 글

자료구조 - Linked List  (0) 2023.09.14
자료구조 개요  (0) 2023.08.17
코딩테스트 개요  (0) 2023.08.03
코딩테스트 공부방법  (0) 2023.05.01
자료구조에 관한 고찰  (0) 2023.02.08