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(객체)
https://github.com/iluvdadong/javascript-algorithm/blob/main/solution/solution.js
'[알고리즘] 문제풀이 연습' 카테고리의 다른 글
[알고리즘] 정렬 - k번째 lv2 (0) | 2021.08.08 |
---|---|
[알고리즘] 프로그래머스 lv2 - 위장 (0) | 2021.08.08 |
[DFS] 개념이해 및 Programmers lv.2 타겟넘버 (자료구조) (0) | 2021.03.19 |
알고리즘 스터디 (0) | 2021.03.05 |
[백준] 15685 드래곤커브 : 시뮬레이션 (0) | 2019.11.15 |