[Javascript] Bubble Sort, Selection Sort, Insertion Sort (버블/선택/삽입 정렬)
버블 정렬과 선택 정렬, 삽입 정렬은 은 가장 간단한 정렬방법들이다. 모두 O(N^2)의 시간복잡도를 갖는다. 버블 정렬 배열 처음부터 두 요소씩 선택하여 뒷 요소가 더 작으면 자리를 바꿔나가는 방식이다. function bubble(arr){ // 배열을 처음부터 두 요소씩 선택하여 뒷 요소가 더 작으면 자리를 바꿔나간다. // 다시 처음부터... n^2번 실행 const len = arr.length-1; let temp, i, j; for(i=0; i [1, 4, 2, 3] 2. 남은 요소들을 탐색하여 가장 작은 수를 찾아 두번째 요소와 자리를 바꾼다. [1, 4, 2, 3] => [1, 2, 4, 3] 3. 반복 function selection(arr) { // 배열을 처음부터 탐색하여 가장 작..
2021. 9. 11.
[프로그래머스] 카펫 (완전탐색/javascript)
가운데는 노란색, 가장자리 한줄은 갈색인 카펫이 있다. 노란색 타일과 갈색 타일의 수가 주어졌을 때 카펫의 가로세로 길이를 리턴하는 문제다. 우선, 갈색 타일은 무조건 한 줄만 테두리쳐져 있으므로 결과는 [노랑타일의 너비+2, 노랑타일의 높이+2]가 될 것이다. 1. 주어진 yellow로 가능한 경우의 수를 구한다. 2. yellow로 가능한 형태 중, 주어진 brown과 일치하는 것을 찾는다. 3. 적합한 yellow 형태의 가로세로에 2씩 더한 값을 리턴한다. yellow = 12인 경우의 가능한 경우의 수를 보자. yellow 영역은 세로x가로가 [[1, 12], [2, 6], [3, 4]] 세 가지가 가능하다. ([4, 3], [6, 2], [12, 1]은 세로가 더 길게 되므로 조건에 맞지 않다..
2021. 8. 26.
[Javascript Cheet Sheet] Array객체, 반복문
for...in, for...of /** * for문은 도중에 아이템을 제거해버리면 제대로 돌지 않는다. */ const arr = [1, 2, 3, 4, 5]; for(let item of arr){ arr.shift(); console.log(arr); console.log(item); // 1 3 5 } /** * for of도 내부적으로는 for(let i = 0 ; i < arr.length ; i++) 이런식으로 동작하기 때문에, * 당연하게도 도중에 배열 아이템이 사라져버리면 배열 길이만큼 반복하지 않는다. * 이렇게 놓고 보면 당연한데도, 왜 내가 생각한 횟수만큼 돌지 않는지 고민했다. 멍청하게 헤매지 말자. * * 원본 배열을 복제한 배열로 작업을 하던가, * splice, pop, sh..
2021. 8. 25.
[Javascript Cheet Sheet] 숫자 다루기
알고리즘 문제풀이에 많이 사용되는 것만 따로 정리함. 선언 축약 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
2021. 8. 25.