[알고리즘] 문제풀이 연습

[알고리즘 스터디 #01] 자바스크립트 알고리즘 / 문법 공부

ddgoori 2021. 6. 13. 01:00

0612 #01. 자바스크립트 알고리즘 스터디 

 

문제 풀며 필요 개념 정리

 

1. var, const, let

const, let은 ES6 문법이며

var는 ES6 이전의 문법이다.

 

var 는 {} 단위의 scope이 아닌 function 단위의 scope을 가진다.

 

var : 같은 변수를 두번 선언했는데도 오류가 나지 않음 ;;;;;; => 많은 오류 발생

보통 프로그래밍 언어들이 가지는 변수 scope과 다름.  

var hello = "hello world";
var hello = "bye world"

console.log(hello); // bye world

 

const: constance의 약자.

한번 선언된 상수의 값을 변경 할 수 없다. 

 

const hello = 'hello';

hello = 'change hello'; //처음 정의된 값을 변경하려니 error발생 

- scope은 { } 

- 그러므로, 괄호 밖에서 hello 상수를 또다시 선언할 수 있다.

 

let

let으로 선언하면 값을 재정의 할 수 있다.

let hello = 'first hello';

hello = 'changed hello'; //값 변경 가능

 

- scope은 { }

- 두번 선언 X

 

ES6 const 와 let을 사용하는 것을 권장함

 

 

2. sort()

 

- 문자 정렬시에는 sort() 함수사용시 아스키코드 문자 순서로 정렬됨 => 문자 정렬시 sort() 사용하면 됨

- 숫자 정렬시에는 sort() 함수 사용시 아스키코드 순으로 정렬되어서 숫자크기대로 정렬이 안됨 sort() 사용 X

=> compareFunction을 사용해야함 -> 배열의 요소를 2개씩 반복해서 보낸뒤 compareFunction이 반환하는 값을 기준으로

정렬을 한다. 만약 보내는 요소의 이름을 a, b라고 하면 반환값에 따른 sort() 함수의 해석은 아래와 같다.

 

앞 a, 뒤 b 

 

반환값 < 0 : a가 b보다 앞에 있어야한다.  => 앞에거가 더 작다는 말. 앞에거가 작으면 앞에 있어야함. 

반환값 = 0 : a와 b 를 그대로 둔다. 순서 변경 X

반환값 > 0 : a가 b보다 뒤에 있어야한다 => 앞에거가 뒤보다 크다는 말. 앞에거가 크면 뒤로 가야함. 

 

그래서 배열의 요소가 예를들면 let arr = [1, 5, 2] 일때

1과 5를 비교해서 1 - 5 를 하면 음수가됨. 음수면 1을 앞에 둠.

그리고, 5와 2를 비교해서 5-2를 한다음에 양수면 앞에거가 더 크니까 뒤로 가야함. 

 

 

3.  parseInt 소수점이하 제거하여 정수로 만듬

 

parseInt()라는 내장함수를 사용하면, 시술의 소수점이하를 제거할 수 있음.

반올림하지 않고 무조건 소수점 이하를 버림

 

123.99999 => 123

123.0000001 => 123

123 => 123

문자열로된 실수도 정수로 만들 "123.213123" => 123

 

 

4.  let max = Math.max(a,b,c)

가장 큰 수를 구한 뒤에 

a+b+c-max > max 를 하면 가장 큰수를 빠진 값끼리

a+b+c-max > max 

 

 

5. Math.ceil(arr/12);  // 올림 

math.round: 소수점 첫번째 자리를 반올림하여 정수로 리터 

math.floor: 전달된 실수의 소수 부분을 무조건 버림

 

 

6. 반복문 총정리 : 배열.forEach() / Object.keys(객체)

 

 

[자바스크립트] 반복문 총정리: for in, for of, forEach 등

자바스크립트의 반복문을 정리해본다. # 자바스크립트 반복문 종류 1. for : 고전적인 for문 2. for in : 객체의 프로퍼티 키 열거 전용 3. for of : 이터러블 순회 전용 4. forEach(): 배열 순회 전용 메서드

curryyou.tistory.com

 

 

 

 

 

https://github.com/iluvdadong/javascript-algorithm/blob/main/solution/solution.js

 

iluvdadong/javascript-algorithm

Contribute to iluvdadong/javascript-algorithm development by creating an account on GitHub.

github.com