본문 바로가기
Web development/Algorithm

[Javascript Cheet Sheet] 숫자 다루기

by 자몬다 2021. 8. 25.

알고리즘 문제풀이에 많이 사용되는 것만 따로 정리함.

 

선언 축약

let a, b;
// a = undefined, b = undefined

let a, b = 1;
// a = undefined, b = 1

let a = 1, b = 2;
// a = 1, b = 2

let [a, b] = [1, 2];
// a = 1, b = 2

let [a, b] = [1];
// a = 1, b = undefined

 

 

세 수 중 최솟값을 구하는 방법

// 1. if문 사용
let min;
if(a<b) min = a;
else min = b;
if(c<min) min = c;

// 2. Math객체 사용
Math.min(a,b,c)

 

배열 요소 중 최솟값 구하기

// 반복문
let min = Number.MAX_SAFE_INTEGER;
for(let i=0; i<arr.length; i++){
	if(arr[i]<min) min = arr[i];
}

// Math.min
Math.min(...arr)

 

 

세 수 중 max값과 나머지 두 값의 합을 비교하기

1. 전체 sum을 구한다.
2. max값을 찾는다.
3. sum-max = 나머지 두 요소의 합

 

Number 객체

Number.MAX_SAFE_INTEGER 
JavaScript에서 안전한 최대 정수. (2^53 - 1) = 9007199254740991

Number.MIN_SAFE_INTEGER
JavaScript에서 안전한 최소 정수. (-(2^53 - 1)) = -9007199254740991

Number.MAX_VALUE
표현 가능한 가장 큰 양수. 1.7976931348623157e+308

Number.MIN_VALUE (음수가 아님에 주의!)
표현 가능한 가장 작은 양수. 즉, 0보다 크지만 0에 가장 가까운 양수. 5e-324

Number.isInteger()
주어진 값이 정수인지 확인합니다. 1 => true, 1.0 => true, 1.1 => false

Number.isSafeInteger()
주어진 값이 안전한 정수(-(2^53 - 1)과 2^53 - 1 사이의 정수)인지 확인합니다.
MIN_SAFE_INTEGER <= x <= MAX_SAFE_INTEGER 인지 확인함

Number.parseInt()
전역 객체 parseInt()와 동일한 값입니다.

 

Math 객체

최솟값
Math.min(1, 2, 3) // 1
Math.min(...arr) // 전개연산자+배열 사용가능

최댓값
Math.max(1, 2, 3) // 3
Math.max(...arr) // 전개연산자+배열 사용가능

절댓값
Math.abs(-2) // 2

반올림 (언제나 정수 반환)
Math.round(20.49); //  20
Math.round(20.5); //  21
Math.round(-20.5); // -20

내림 (언제나 정수 반환)
Math.floor(45.05); // 45
Math.floor(4); // 4
Math.floor(-45.05); // -46

올림 (언제나 정수 반환)
Math.ceil(0.95); // 1
Math.ceil(4); // 4
Math.ceil(7.004); // 8
Math.ceil(-0.95); // -0

소수점 자릿수 지정(자르기)
const num = 1.12345;
num.toFixed(3); // "1.123" string타입임에 유의
num.toFixed(0); // "1"
num.toFixed(7); // "1.1234500"

const b = 1.99;
b.toFixed(1); // "2.0" 반올림 되는것에 유의
b.toFixed(2); // "1.99" 
b.toFixed(0) // "2"

2의 3제곱
Math.pow(2, 3) // 8
2**3 // pow와 같으나, BigInt 사용이 가능함
// 거듭제곱 연산자 주의사항 : 우측결합성을 가짐. 2**3**2 = 2**(3**2)

랜덤
Math.random() // 0~1 사이의 난수

제곱근
Math.sqrt(16) // 4
Math.squt(3) // 1.7320...

숫자 정수부분 반환
Math.trunc(1.1231) // 1

BigInt
-2^53이하 2^53이상의 수를 다룰 때 사용 
const a = 2n ** 53n; // 9007199254740992n
// integer와 혼용해서 연산할 수 없다.
a + 1n // 가능
a + 1 // 불가능

 

1부터 N까지의 합

1. 반복문
let answer = 0;
for(let i=1; i<=n; i++){
	answer += i;
}

2. 가우스 공식
n*(n+1)/2

// 추가 : 1부터 n까지 제곱의 합
n * (n+1) * (2*n + 1) / 6

 

홀짝 판별

if(n%2 == 1) console.log('홀수')
else console.log('짝수')

 

n의 자리 구하기

1의 자리
1234%10 // 4

10의 자리
parseInt(1234%100/10) // 3

100의 자리
parseInt(1234%1000/100) // 2

n의 자리
parseInt(1234 % (10*n) / n)

 

뒤에서 n의 자리까지 구하기

1의자리까지 구하기
1234%10 // 4

10의 자리까지 구하기
1234%100 // 34

 

 

댓글