๋ฌธ์ N๊ฐ์ ์ซ์๊ฐ ์ ๋ ฅ๋๋ฉด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ์ฝ์ ์ ๋ ฌ์ ๋๋ค. ๋ฌธ์ ํ์ด ์ฝ์ ์ ๋ ฌ(Insertion Sort) ์ ์์ ์นด๋๋ฅผ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ๊ณผ ์ ์ฌ ์๋ฃ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์์์๋ถํฐ ์ฐจ๋ก๋๋ก ์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐฐ์ด ๋ถ๋ถ๊ณผ ๋น๊ต ๋น๊ต ํ ์์ ์ ์์น๋ฅผ ์ฐพ์ ์ฝ์ ํจ์ผ๋ก์จ ์ ๋ ฌ์ ์์ฑ ๋งค ์์๋ง๋ค ํด๋น ์์๋ฅผ ์ฝ์ ํ ์ ์๋ ์์น๋ฅผ ์ฐพ์ ํด๋น ์์น์ ์ ์ฌ ์ฝ๋ function solution(...arr) { let answer = arr; for(let i = 1; i 0; j--) { //ํ์ฌ ์์ ์์ ๋์ฌ ์๋ ์๋ฃ ๋ฐฐ..
startTimer : function(){ if(!this.isPending) { this.timerId = setInterval(() => { this.currentSec+=1; if(this.currentSec >= 60) { this.currentMin+=1; this.currentSec = 0; } document.querySelector('#min').textContent = `${this.currentMin < 10 ? `0${this.currentMin}` : `${this.currentMin}`}`; document.querySelector('#sec').textContent = `${this.currentSec < 10 ? `0${this.currentSec}` : `${this.cur..
๋ฌธ์ N๊ฐ์ ์ ์๊ฐ ์ ๋ ฅ๋๋ฉด ๋น์ ์ ์ ๋ ฅ๋ ๊ฐ์ ์ ๋ ฌํด์ผ ํ๋ค. ์์ ์ ์๋ ์์ชฝ์ ์์ ์ ์๋ ๋ท์ชฝ์ ์์ด์ผ ํ๋ค. ๋ํ ์์ ์ ์์ ์์ ์ ์์ ์์์๋ ๋ณํจ์ด ์์ด์ผ ํ๋ค. ๋ฌธ์ ํ์ด ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ํํ๋ค๊ฐ ์ธ๋ฑ์ค ์์๊ฐ ์์ ์ ์์ผ ๊ฒฝ์ฐ์ ์์ ์ ์๋ฅผ ์ ์ธํ ๊ฐ์ฅ ์์ ์ธ๋ฑ์ค ์๋ฆฌ๊น์ง ์ด์ ์ธ๋ฑ์ค ์์์์์๋ฅผ ๋ฐ๊พผ๋ค. ์ฝ๋ function solution(...arr) { let answer = arr; let front = 0; for(let i = 0; i front; j--) { //๊ฐ์ฅ ์๊น์ง ์ด๋ [arr[j - 1], arr[j]] = [arr[j], arr[j - 1..
๋ฌธ์ N๊ฐ์ ์ซ์๊ฐ ์ ๋ ฅ๋๋ฉด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ๋ฒ๋ธ์ ๋ ฌ์ ๋๋ค. ๋ฌธ์ ํ์ด ๋ฒ๋ธ ์ ๋ ฌ(Bubble Sort) ์๋ก ์ธ์ ํ ๋ ์์๋ฅผ ๊ฒ์ฌํ์ฌ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ ์ธ์ ํ 2๊ฐ์ ๋ ์ฝ๋๋ฅผ ๋น๊ตํ์ฌ ํฌ๊ธฐ๊ฐ ์์๋๋ก ๋์ด ์์ง ์์ผ๋ฉด ์๋ก ๊ตํ ์ ํ ์ ๋ ฌ๊ณผ ๊ธฐ๋ณธ ๊ฐ๋ ์ด ์ ์ฌ ์ฒซ ๋ฒ์งธ ์๋ฃ์ ๋ ๋ฒ์งธ ์๋ฃ๋ฅผ, ๋ ๋ฒ์งธ ์๋ฃ์ ์ธ ๋ฒ์งธ ์๋ฃ๋ฅผ, (๋ง์ง๋ง - 1)๋ฒ์งธ ์๋ฃ์ ๋ง์ง๋ง ์๋ฃ๋ฅผ ๋น๊ต ๋ฐ ๊ตํํ์ฌ ์ ๋ ฌ 1ํ ์ํ๋ฅผ ๋ง์น๋ฉด ๊ฐ์ฅ ํฐ ์๋ฃ๊ฐ ๋งจ ๋ค๋ก ์ด๋ํ๋ฏ๋ก 2ํ์ ์์๋ ๋งจ ๋์ ์๋ ์๋ฃ๋ ์ ๋ ฌ์์ ์ ์ธ ์ฝ๋ function solution(...arr) { let answer = arr; for(let i = 0; i < arr.length - 1; i++) {..
https://choi95.tistory.com/89 RxJS debounceTime operator๋ฅผ ํตํด Event request ์ค์ด๊ธฐ ๊ฒ์์ด๋ฅผ ์ ๋ ฅํ๋ ๋์์ ์ํฐํค, ๊ฒ์ ๋ฒํผ์ ๋๋ฅผ ํ์ ์์ด ๊ฒฐ๊ณผ๊ฐ์ ์ฆ์ ๋ฐ์ํ ์ ์๋๋ก ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํํ์๋ค. const dispatchEvent = debounce((targetText) => { this.callback(targetText); }, thi.. choi95.tistory.com ์ด์ ํฌ์คํ ์์ Operator๋ ํ์ฌ Observable ์ธ์คํด์ค ๊ธฐ๋ฐ์ผ๋ก ํญ์ ์๋ก์ด Observable ์ธ์คํด์ค๋ฅผ ๋ฐํํ ์ ์๋ค๋ ์ฌ์ค์ ์์๋ค. ๋งค๋ฒ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ค๋ ๋ง์ ๋ค์๊ณผ ๊ฐ์ด ๋ํธ ์ฒด์ด๋์ ๊ตฌ์ฑํ ์ ์๋ค๋ ์๋ฏธ์ด๋ค. observabl..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bIycVz/btq9R5c6GL5/pnAjfHBeF57RCjsOyfhM5k/img.png)
๊ฒ์์ด๋ฅผ ์ ๋ ฅํ๋ ๋์์ ์ํฐํค, ๊ฒ์ ๋ฒํผ์ ๋๋ฅผ ํ์ ์์ด ๊ฒฐ๊ณผ๊ฐ์ ์ฆ์ ๋ฐ์ํ ์ ์๋๋ก ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํํ์๋ค. const dispatchEvent = debounce((targetText) => { this.callback(targetText); }, this.delayTime); this.textinputElement.addEventListener('keyup', (event) => { dispatchEvent(event.target.value); }); keyup ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ Input ์์์ ๋ฑ๋กํด์ฃผ๊ณ ์ด๋ฒคํธ ๋ฐ์ ์ ๊ด๋ จ ํจ์๋ฅผ ํธ์ถํด์ฃผ๋๋ก ํ์๋ค. RxJS debounce operator ์์ ๊ฐ์ ๊ธฐ๋ฅ์ RxJS๋ฅผ ํตํด ๋ฆฌํฉํ ๋งํ์๋ค.ํ ์์ค ์์์๋ ์ฒ๋ฆฌํด์ผ ๋ ๋น๋๊ธฐ ์์ ์ด ๋ง..
๋ฌธ์ N๊ฐ์ ์ซ์๊ฐ ์ ๋ ฅ๋๋ฉด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ์ ํ์ ๋ ฌ์ ๋๋ค. ๋ฌธ์ ํ์ด ์ ํ์ ๋ ฌ(Selection Sort) ์ ํ์ ๋ ฌ์ ๊ธฐ์กด์ ์๋ฆฌ๊ฐ ์ ํด์ ธ ์์_์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ฃผ์ด์ง ๋ฆฌ์คํธ ์ค์ ์ต์ value๋ฅผ ํ์ ํด๋น ๊ฐ์ ๋งจ ์์ ์์นํ value ๊ต์ฒด ์ฐธ์กฐ๋ฅผ ๋ง์น ํด๋น ์์น์ ์ธ๋ฑ์ค๋ฅผ ์ ์ธํ๊ณ ๋๋จธ์ง ๋ฆฌ์คํธ๋ฅผ ์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ต์ฒด n๊ฐ์ ์ฃผ์ด์ง ๋ฆฌ์คํธ => ์๊ฐ๋ณต์ก๋ ์ n^2 ์ฝ๋ function solution(...arr) { let answer = arr; for(let i = 0; i < arr.length; i++) { for(let j = (i + 1); j < arr.length; j++) { //์์ ์ ์ ์ธํ ๋ค์ ์ธ๋ฑ์ค ์์๋ถํฐ ์..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/zMEPV/btq9JNyhPnx/Uvt70xaaeIP5UOFDUY31Yk/img.png)
https://choi95.tistory.com/86 auto-complete_๋น๋๊ธฐ ์ฝ๋ฐฑ ํจ์, focusEvent, mouseEvent ๋ค์๊ณผ ๊ฐ์ด Input ํ๊ทธ์ ํค์๋๋ฅผ ์ ๋ ฅํ๋ฉด ๊ด๋ จ ํค์๋์ ๋ํด์ ์ถ์ฒ ๊ฒ์์ด๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋๋ก ๊ตฌํํ๊ณ ์ ํ๋ค. debounce๋ฅผ ํตํ request ํธ์ถ ์ต์ํ ์ฌ์ฉ์ Input ํ๊ทธ์ ํค์๋๋ฅผ ์ ๋ ฅ choi95.tistory.com ์ด์ ํฌ์คํ ์์ ๊ตฌํ ์๋ ์ถ์ฒ ๊ฒ์ ๋ฆฌ์คํธ์ ์ถ์ฒ์ผ๋ก ๋ฌ ์์ฑ๋ ํค์๋๋ฅผ ํด๋ฆญํ๋ฉด Input ํ๊ทธ value์ ๋ฐ์ธ๋ฉ๋๋๋ก ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ๊ตฌํํ์๋ค. this.searchListElement.addEventListener('click', e => { let targetItem = e.target.textContent;..