
https://choi95.tistory.com/61 Dark-mode Question ํ ๊ธ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํ ๋ง(๋คํฌ ๋ชจ๋/๋ผ์ดํธ ๋ชจ๋)๋ฅผ ์ค์ ํ๋ฉด ํ ๋ง๊ฐ ๋ทฐ์ ๋ฐ์๋๋๋ก ๊ตฌํํ๊ณ ์ ํ๋ค.ํ ๋ง๋ ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ์ ์ฅํ์ฌ ์นํ์ด์ง๋ฅผ ๋ฆฌ๋ก๋ํ๊ฑฐ๋ ๋ค์ ์ ๊ทผํ์ ๋ choi95.tistory.com ์ด์ ํฌ์คํ ์์ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฌ๋์ด ์๋ value ๊ฐ์ ๋ฐ๋ผ ๋ฐฐ๊ฒฝ ํ ๋ง ์์์ ๋์ ์ผ๋ก ๋ณ๊ฒฝํด ์ฃผ์๋ค. ๋ก์ปฌ ์คํ ๋ฆฌ์ง๊ฐ ์๋ ํ์ฌ ์ด์ ์ฒด์ ๋ ๋ฒจ์์ ์ค์ ๋ ์ฌ์ฉ์ ํ ๋ง(๋คํฌ ๋ชจ๋/๋ผ์ดํธ ๋ชจ๋)๋ฅผ ํ ๋๋ก ๋ฐฐ๊ฒฝ ์์์ ๋ฐ๊ฟ ์ ์๋ค. window.matchMedia ๋ค์๊ณผ ๊ฐ์ด window.matchMedia ๋ฉ์๋๋ฅผ ์ฝ์ ์ฐฝ์ ์ถ๋ ฅํด ๋ณด๋ฉด MediaQueryList ๋ผ๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํจ์ ํ์ธํ ์ ์๊ณ ํ..

Question ํ ๊ธ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํ ๋ง(๋คํฌ ๋ชจ๋/๋ผ์ดํธ ๋ชจ๋)๋ฅผ ์ค์ ํ๋ฉด ํ ๋ง๊ฐ ๋ทฐ์ ๋ฐ์๋๋๋ก ๊ตฌํํ๊ณ ์ ํ๋ค.ํ ๋ง๋ ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ์ ์ฅํ์ฌ ์นํ์ด์ง๋ฅผ ๋ฆฌ๋ก๋ํ๊ฑฐ๋ ๋ค์ ์ ๊ทผํ์ ๋ ์ ์ฅ๋ ํ ๋ง๋ฅผ ์ ์ฉํ๋๋ก ํ๋ค. Solution document.addEventListener('DOMContentLoaded', () => { const theme = localStorage.getItem('theme'); if(!theme) localStorage.setItem('theme', 'white'); if(theme === 'dark') document.body.classList.add('dark'); else document.body.classList.remove('white'); document.bo..
๋ฌธ์ A, B ๋ ๊ฐ์ ์งํฉ์ด ์ฃผ์ด์ง๋ฉด ๋ ์งํฉ์ ๊ณตํต ์์๋ฅผ ์ถ์ถํ์ฌ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์. ๋ฌธ์ ํ์ด ๋ ๋ฐฐ์ด์ ํฉ์ณ ์ด๊ธฐํ ํ ์์ ๋ณ์๋ฅผ ์ํํ๋ฉด์ Array.indexOf() ๋ฉ์๋์ ์ธ๋ฑ์ค i๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์์์ ์ธ๋ฑ์ค ๊ฐ์๋น๊ตํ๋ค. Array.indexOf() ๋ฉ์๋๋ ์ค๋ณต๋๋ ์์๊ฐ ์ฌ๋ฌ ๊ฐ ์๋ค๋ฉด ์ฒซ ๋ฒ์งธ๋ก ๊ฒ์๋ ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ์ค๋ณต ๋ ๊ฐ์์๋ณํ ์ ์๋ค. ์ฝ๋ function solution(arr1, arr2) { let answer = []; let tmp = [...arr1, ...arr2]; tmp.forEach((item, i) => { if(tmp.indexOf(item) !== i) { answer.push(item); } }) c..
๋ฌธ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ์ด ๋ ๋ ๋ฐฐ์ด์ด ์ฃผ์ด์ง๋ฉด ๋ ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ํฉ์ณ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์. ๋ฌธ์ ํ์ด ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ ๋ฐฐ์ด์ ํ๋์ ๋ฐฐ์ด๋ก ํฉ์น๊ธฐ ์ํด ์คํ๋ ๋ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค. ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ธฐ ์ํด Array.sort() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค. ์ฝ๋ function solution(arr1, arr2) { let answer = [...arr1, ...arr2]; answer.sort((a, b) => a - b); return answer; } let arr1 = [1, 3, 5]; let arr2 = [2, 3, 6, 7, 9] console.log(solution(arr1, arr2)); ๋ฌธ์ ํ์ด2 Array.sort() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ ๊ฒฝ์ฐ ์๊ฐ ๋ณต์ก๋๋ O(n × logn)..
๊ธฐ์กด Scroll ์ด๋ฒคํธ ๋ฌธ์ ๊ธฐ์กด Scroll ์ด๋ฒคํธ๋ ๋จ์๊ฐ์ ๋ง์ ์์ด ํธ์ถ๋ ์ ์๊ณ ๋๊ธฐ์ ์ผ๋ก ์คํ๋๊ธฐ ๋๋ฌธ์ ๋ฉ์ธ ์ค๋ ๋(Main Thread)์ ์ํฅ์ ์ค๋ค. ๋ํ ํ ํ์ด์ง ๋ด์ ์ฌ๋ฌ scroll ์ด๋ฒคํธ(๋ฌดํ ์คํฌ๋กค, ๊ด๊ณ ๋ฐฐ๋, ์ ๋๋ฉ์ด์ ๋ฑ)๊ฐ ๋ฑ๋ก๋์ด ์์ ๊ฒฝ์ฐ, ๊ฐ ์๋ฆฌ๋จผํธ๋ง๋ค ์ด๋ฒคํธ๊ฐ๋ฑ๋ก๋์ด ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ์คํฌ๋กคํ ๋๋ง๋ค ์ด๋ฅผ ๊ฐ์งํ๋ ์ด๋ฒคํธ๊ฐ ๋์ ์์ด ํธ์ถ์ด ๋๋ค.(์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ด์ ํฌ์คํ ์์ ๋๋ฐ์ด์ฑ_Debouncing์ ํตํด ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ์๋ค) ๊ทธ๋ฆฌ๊ณ ํน์ ์ง์ ์ ๊ด์ฐฐํ๊ธฐ ์ํด์๋ getBoundingClientRect() ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋๋ฐ, ์ด ํจ์๋ ๋ฆฌํ๋ก์ฐ(reflow) ํ์์๋ฐ์์ํจ๋ค๋ ๋จ์ ์ด ์๋ค. ๋ฆฌํ๋ก์ฐ(reflow): ๋ธ๋ผ์ฐ์ ๊ฐ ์น ํ์ด์ง์ ์ผ๋ถ..
https://choi95.tistory.com/56 Infinite Scroll Question 1. ์ต์ด์๋ 20๊ฐ์ ๋ชฉ๋ก์ ๋ถ๋ฌ์จ๋ค. 2. ์คํฌ๋กค์ ์ตํ๋จ์ผ๋ก ์ด๋์ 'loading' ์ํ ํ์๊ฐ ๋ํ๋๋ฉฐ, ์ดํ์ 20๊ฐ ๋ชฉ๋ก์ ๋ ๊ฐ์ ธ์จ๋ค. 3. ๋ก๋ฉ ์๋ฃ์ 'loading'ํ์๊ฐ ์ฌ๋ผ์ง๋ฉฐ, ๊ฐ์ ธ์จ ๋ชฉ๋ก choi95.tistory.com ์ด์ ํฌ์คํ ์์ onScroll ์ด๋ฒคํธ์ scrollingElement ํ๋กํผํฐ๋ฅผ ํตํด ๋ฌดํ ์คํฌ๋กค ๋ทฐ๋ฅผ ๊ตฌํํ์๋ค. ํ์ง๋ง ์ด์ ๊ฐ์ด onScroll ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ก ์ด๋ฒคํธ๋ฅผ ์ง์์ ์ผ๋ก ๊ฐ์งํ ๊ฒฝ์ฐ ์ํํ๊ณ ์ ํ๋ ์ฐ์ฐ ์ฒ๋ฆฌ๋ค์ด ์คํฌ๋กค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ์ํ๋๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค. Throttle๊ณผ Debounce ์ด๋ฌํ ๋ฐ๋ณต์ ์ธ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์..
Question 1. ์ต์ด์๋ 20๊ฐ์ ๋ชฉ๋ก์ ๋ถ๋ฌ์จ๋ค. 2. ์คํฌ๋กค์ ์ตํ๋จ์ผ๋ก ์ด๋์ 'loading' ์ํ ํ์๊ฐ ๋ํ๋๋ฉฐ, ์ดํ์ 20๊ฐ ๋ชฉ๋ก์ ๋ ๊ฐ์ ธ์จ๋ค. 3. ๋ก๋ฉ ์๋ฃ์ 'loading'ํ์๊ฐ ์ฌ๋ผ์ง๋ฉฐ, ๊ฐ์ ธ์จ ๋ชฉ๋ก์ด ํ๋จ์ ์ถ๊ฐ๋๋ค. (๋ฌดํ ๋ฐ๋ณต) Solution const loadMore = async () => { const target = page ? fetchMoreTrigger : app; target.classList.add("loading"); await renderList(page++); target.classList.remove("loading"); }; const onScroll = async e => { const {scrollTop, scrollHeight, clie..
๋ฌธ์ ํ์๋ 1๋ถํฐ 100์ฌ์ด์ ์์ฐ์๊ฐ ์ ํ N์ฅ์ ์นด๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค (๊ฐ์ ์ซ์์ ์นด๋๊ฐ ์ฌ๋ฌ์ฅ ์์ ์ ์๋ค). ํ์๋ ์ด ์ค 3์ฅ์ ๋ฝ์ ๊ฐ ์นด๋์ ์ ํ ์๋ฅผ ํฉํ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๊ธฐ๋กํ๋ ค๊ณ ํ๋ค.๊ธฐ๋กํ ๊ฐ ์ค K๋ฒ์งธ๋ก ํฐ ์๋ฅผ ์ถ๋ ฅํ๊ณ ์ ํ๋ค. ๋ฌธ์ ํ์ด 1. ์ธ ๊ฐ์ ์๋ฅผ ๋ฝ์ ๋ค ํฉ์ฐ ํ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ 3์ค for๋ฌธ์ ์ด์ฉํ๋ค. ์ด๋ ์๊ธฐ ์์ ์ ๋ฝ์์ผ ๋๋ ์ ์ค ์ ์ธํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ค์ฒฉ for๋ฌธ ๋ด์ ์ด๊ธฐ ์ธ๋ฑ์ค๊ฐ์ ์ด์ for๋ฌธ ๋ด์ ์ด๊ธฐ ์ธ๋ฑ์ค ๊ฐ์ 1์ ๊ฐ์ฐํด ์ค๋ค. 2. 3๋ฒ์งธ๋ก ํฐ ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด์ ํฉ์ฐ ํ ๋ชจ๋ ๊ฒฐ๊ณผ๊ฐ์ ๋ํ ๋ฐฐ์ด์ ๋ํด์ ๋ฐ๋ณต๋ฌธ์ ์ํํด ์ค๋ค. ์ด๋ ๊ธฐ์ค์ด ๋ ๊ฐ์ฅ ๋งจ ์์ ๊ฐ์ด ๋ฐฐ ์ด ๋ด์์ ์ต๋๊ฐ์ด ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ด์นจ์ฐจ์์ผ๋ก ์ ..