[JavaScript] 코딩 테스트를 위한 자바스크립트 핵심 문법

ubin·2023년 9월 3일

JavaScript

목록 보기
2/21
post-thumbnail

📍알고리즘 코딩 테스트 문제의 입출력 형식

: 알고리즘 문제에서는 적절한(약속된) 입출력 양식이 주어진다.
1. 데이터를 입력 받거나 생성하는 것이다.
2. 이후에 적절한 알고리즘을 사용하여 도출된 정답을 정확한 형식으로 출력한다.

📍자바스크립트 기본 출력

  • 일반적인 알고리즘 문제를 풀 때, 표준 출력으로 console.log()를 이용한다.
  • 단순 문자열 출력시, console.log('Hello World!');
  • 변수를 포함한 문자열 출력시, 템플릿 리터럴(따옴표 대신 백틱 사용)을 사용해 출력, console.log('정답은 ${변수명}입니다.');

📍기본 사칙연산

  • 덧셈: console.log(a+b);
  • 뺄셈: console.log(a-b);
  • 곱셈: console.log(a*b);
  • 나눗셈: console.log(a/b);
  • 몫 연산: console.log(parseInt(a/b));
  • 나머지 연산: console.log(a%b);

📍빠른 출력 (중요)

  • 자바스크립트로 문제를 풀 때, 출력 과정만으로도 시간 초과를 받을 때가 있다.
  • 이 때, 메모리를 조금 더 사용하는 대신 출력 시간을 단축하기 위해 사용하는 코드!
  • 여러 출력 결과를 한 줄에 하나씩 출력할 때 매번 console.log()를 실행하지 않고, 하나의 문자열에 결과값들을 저장해서 한 번에 출력하는 것이 더 빠르게 수행된다.
	let answer = ‘’; //빈 문자열 생성
	
	for (let i = 1; i <= 100; i++) {
		answer += i + ‘\n’; //문자열로 변환하여 기록
	}
	
	console.log(answer);

📍 기본 입력 - fs 모듈 (중요)

  • 입력 데이터가 텍스트 파일 형태로 주어지는 경우, 파일 시스템 모듈을 사용한다.
  • 예시) /dev/stdin 파일에 적힌 텍스트를 읽어오는 경우, 다음과 같은 코드 작성
    - 기능: 전체 텍스트를 읽어 온 뒤에, 줄바꿈 기호를 기준으로 구분하여 리스트로 변환하기
//readline 모듈 보다는 fs를 이용해 파일 전체를 읽어들여 처리하기
let fs = require(‘fs’);
let input = fs.readFileSync(/dev/stdin’).toString().split(‘\n’);
//let input = fs.readFileSync(‘파일 이름’).toString().split(‘\n’)

console.log(input);

📍문법 - 조건문

: 조건에 따라서 프로그램의 흐름을 결정할 때 사용할 수 있는 문법이다.

  • condition: 참 혹은 거짓을 반환하는 조건식
  • statementN: conditionN이 참일 때 실행되는 구문
  • else statement: 앞의 모든 조건문이 거짓일 때 실행되는 구문기본 입력 - readline 모듈
  • 간혹 특정 시스템에선 fs 모듈을 사용할 수 없을 때가 있는데, 이 때 readline 모듈을 사용할 수 있다.
  • readline 모듈은 한 줄씩 입력을 받아서, 처리하여 정답을 출력할 때 사용한다.
	const rl = require(‘readline’).createInterface({ //readline 선언
		input: process.stdin,
		output: process.stdout
	});
	
	let input = [];
	rl.on(‘line’, function(line) { // 콘솔 입력 창에서 엔터를 입력할 때마다 호출
		input.push(line);
	}).on(‘close’, function() { // 콘솔 입력 창에서 ctrl+c 또는 ctrl+d를 입력하면 입력 종료 호출됨
		console.log(input);
		process.exit();
	});

📍문법 - 조건문

: 조건에 따라서 프로그램의 흐름을 결정할 때 사용할 수 있는 문법이다.

  • condition: 참 혹은 거짓을 반환하는 조건식
  • statementN: conditionN이 참일 때 실행되는 구문
  • else statement: 앞의 모든 조건문이 거짓일 때 실행되는 구문
	if (condition1) 
		statement1
	else if (condition2)
		statement2
	else if (condition3)
		statement3
	…
	else
		statementN

📍문법 - for 반복문

: 조건에 따라서 특정한 코드를 반복하고자 할 때 사용할 수 있는 문법이다.

  • 초기문이 존재한다면 초기문이 먼저 실행되어 초기화 작업 실행된다.
  • 조건문이 참이라면 블록 내부 코드가 실행되고, 거짓이면 반복문이 종료된다.
  • 블록 내부 코드가 실행된 뒤에 증감문이 실행된다.
	for (초기문; 조건문; 증감문) {
		//statement
	}
	
	let sum = 0;
	for (let i = 1; i <= 100; i++) {  //1부터 100까지의 합 계산
		sum += I;
	}
	console.log(sum);

📍문법 - while 반복문

: 조건에 따라서 특정한 코드를 반복하고자 할 때 사용할 수 있는 문법이다.

  • 조건문이 참일 때 실행되는 반복문이다.
  • 블록 내부의 코드가 실행되기 전에 참 혹은 거짓을 판단한다.
while(조건문) {
		//실행되는 코드 부분
	}

📍문법 - Number와 String 형태 변환

: 수(number) 데이터와 문자열(string) 데이터 간의 상호 변환이 필요하다.

//Int to String
	let a =777;
	let b = Number(a); //int 777로 변환됨
	console.log(b);

	//String to Int
	let a  = 777;
	let b = String(a); //string ‘777’로 변환됨 
	console.log(b); 

📍문법 - Array.prototype.reduce()

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

  • reduce() 메서드는 배열의 각 요소에 대해 reducer 함수를 실행한 뒤에 하나의 결과를 반환한다.
  • reducer의 형태: (accumulator, currentValue) => (반환값)
  • 배열의 각 원소를 하나씩 확인하며, 각 원소는 currentValue에 해당한다.
  • reduce()에서 반환된 값은 그 이후의 원소에 대하여 accumulator에 저장된다.
let data = [5, 2, 3, 7, 4];

	//minValue 구하기 예제
	let minValue = data.reduce((a, b) => Math.min(a, b));
	//처음 reduce()에는 5, 2가 a와 b에 들어감, 반환값으로 2가 반환됨, 다음 reduce()에는 첫번째 반환값인 2와 3이 a와 b에 들어감… 차례로 다음 반환값과 다음 배열값이 들어감
	console.log(minValue);

	//원소의 합계 구하기 예제
	let sum = data.reduce((a, b) => a + b);
	//처음 a와 b에는 5와 2가 들어가고, 그 이후에는 a+b라는 반환값과 다음 배열값이 들어감

📍문법 - 배열 초기화

  • 직접 값을 설정하여 초기화: let arr = [값1, 값2, 값3, …, 값n]
  • 길이가 n이고 모든 원소의 값이 x 또는 0인 배열 초기화: let arr = new Array(n).fill(x 또는 0);

📍문법 - 집합 자료형

: 특정한 원소의 등장 여부를 파악할 때 집합 자료형을 효과적으로 사용할 수 있다.

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

	//여러 개의 원소 삽입, 단 중복 원소는 하나만 삽입됨
	mySet.add(2);
	mySet.add(1);
	mySet.add(5);
	mySet.add(2);
	//원소의 개수 
	console.log(`원소의 개수: ${mySet.size}`);
	//특정 원소 존재 여부
	console.log(`원소 2를 포함하고 있는가? ${mySet.has(2)}`);
	//원소 제거 
	mySet.delete(1);
	//원소를 하나씩 출력 
	for (let item of mySet) console.log(item);

📍문법 - 소수점 아래 특정 자리에서 반올림

: 실수를 출력할 때 소수점 아래 특정 자리에서 반올림할 수 있다.

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

📍문법 - 이스케이프 시퀀스(Escape Sequence)

: 예약 문자 혹은 특수 문자를 출력하기 위하여 이스케이프 시권스를 사용할 수 있다.

  • \t : 탭
  • \\ : 역 슬래시
  • \” : 큰 따옴표
  • \’ : 작은 따옴표
profile
프론트엔드 개발자가 되고싶은 코린이⌨️

0개의 댓글