https://www.acmicpc.net/problem/2252가장 기본적인 위상정렬을 통해 해결 할 수 있다.어떤 사람 뒤에 어떤 사람이 와야하는지를 정렬하는 것이기 때문이다.
https://www.acmicpc.net/problem/2623전체 가수의 순서를 정하는 것이다.위상정렬을 통해서 해결할 수 있다.가장 기본적인 위상정렬을 하고,마지막에 모든 가수가 정상적으로 result에 들어갔는지를 확인 해주면 된다.
https://www.acmicpc.net/problem/14676골드 4 문제이다.위상정렬을 활용하면 된다.건물들을 순서가 있고, 건물을 하나씩만 지을 수 있는것이 아니기에 그것까지 체크해주면 된다.그리고 건물을 정상적으로 건설하거나, 건설한 만큼의 건물만
https://www.acmicpc.net/problem/9470잘 이해가 안 됐었던 문제이다.위상정렬을 응용하면 된다.Strahler 순서를 구하는 문제인데, 처음 시작하는 곳은 순서가 1이다. 그리고 이에 연결된 노드들은 그 노드로 들어오는 순서 중 가장
요즘 웹사이트에서 찾아보면 하나의 페이지만 있고, 상단의 네비게이션 바를 통해 화면을 이동하는 방식을 볼 수 있다. 이러한 페이지는 어떻게 구현하는 것일까? 물론 스크롤을 하나하나 계산해서 이동시킬 수도 있겠지만, element의 메소드인 scrollIntoView를
요즘 개발 환경에서 번들링을 이용해서 모든 코드를 하나의 번들로 묶어서 만들게 된다. 앱이 비교적 간단한 편이라면 크게 문제가 되지 않지만, 프로젝트가 커지면 전달해야 하는 파일도 커지고, 유저의 브라우저가 파싱해야하는 정보도 많아지기 때문에 퍼포먼스 문제들이 생길 수
직역하면 나무 흔들기, 모듈을 번들링할 때 사용하지 않는 코드를 제거하는 최적화 과정을 말한다.이 용어를 처음 최적화 개념에 사용한건 rollup.js이다. Webpack 4 부터 대단히 영리한 최적한 빌드를 보여준다.Webpack의 optimization에서 prov
'웹에서 표준적으로 사용되는 기술이나 규칙'표준화 단체인 W3C가 권고한 표준안에 따라 웹사이트를 작성할 때 이용하는 HTML, CSS, JavaScript등에 대한 규정이 담겨있다.어떤 운영체제나 브라우저를 사용하더라도 웹페이지가 동일하게 보이고 정상작동해야 함을 의
호이스팅은 보통 변수를 위로 끌어올리는 것이라는 표현을 많이한다. 그렇다면 개발자들을 헷갈리게 하는 호이스팅을 왜 만들었을까?? 이를 알기 위해서는 JS엔진이 JS를 어떻게 해석하고, 어떻게 Excution Context를 만들고 어떤 작업을 하는지를 알아야한다.JS엔
자바스크립트는 객체 프로퍼티 키로 문자형과 심볼형만을 허용한다. 숫자형, 불린형 모두 불가능하다.Symbol은 ES6에 새로 추가된 원시 타입이다. 심볼은 유일한 식별자를 만들고 싶을 때 사용한다.심볼은 unique 하기 때문에, description이 같아도 충돌하지
자바스크립트에서 객체를 만들기 위한 템플릿으로 생성자 함수와 class를 사용한다. class는 생성자 함수에서 사용하기만 편하게 한 편의적 문법(syntactic sugar)라고 하는 사람들이 많다. 하지만 동일한 역할을 하는 것 외에도 추가적인 기능들이 있다.cla
예전엔 속성명에 \_를 프리픽스 해서 사용했다고 한다. 하지만 private 하게 쓰자라는 컨벤션이지 private하지 않다. 그래서 이제 \_는 거의 사용하지 않는다.근본적으로 접근이 불가능한 private 속성을 만드는 방법으로는 클로저를 이용하는 방법이 있다.비슷
NaN은 Not A Number(숫자가 아님)를 나타낸다.NaN을 반환하는 연산에는 5가지 종류가 있다.숫자로써 읽을 수 없음.(parseInt('문자열'), Number(undefined)결과가 허수인 계산식 (Math.sqrt(-1))피연산자가 NaN (7 \*\*
타입스크립트에서 제공하는 기본 유틸리티타입이 몇가지 있다. 유틸리티 타입은 이미 정의 해놓은 타입을 변환할 때 사용하기 좋다. 그 중에 간단하게 Pick, Partial, Omit을 알아보았다.Pick은 특정 타입에서 몇 개의 속성을 선택하여 타입을 정의 할 수 있다.
객체의 확장을 막는 방법으로 가장 유명한 Object.freeze 가 있다. 하지만 Object.freeze도 깊은 freeze는 하지 못한다. 그리고 찾아보니 freeze 말고 다른 메소드로도 객체의 확장을 막는 방법들이 있었다.이를 이해하기 위해서는 먼저 객체의 프
https://dmitripavlutin.com/use-react-memo-wisely/이글을 읽고 제 나름대로 번역한 글입니다.user interface 성능의 향상을 위해 React는 higher-order compoenent인 React.memo를 제공한
https://dmitripavlutin.com/dont-overuse-react-usecallback/이 글을 읽고 제 나름대로 번역한 글입니다.useCallback은 함수를 메모이제이션 하는 것이다.어떤 사람이 물었다고 한다. '우리 팀 어떤분은 모든 함수
IntersectionObserver API에 대해 알아보려고 한다. 무한 스크롤을 구현할 때 주로 scroll event와 throttle을 사용하여 구현했었다. 하지만 scroll event는 main thread에서 돌아가기 때문에 성능에 좋지 않다는 글을 보았다
https://programmers.co.kr/learn/courses/30/lessons/68936분할 정복 기법을 사용해서 재귀적으로 풀면 된다. 정사각형이기 때문에 반으로 딱 나눠지고 그것을 조건에 따라 4등분 하여 다시 똑같이 진행해주면 된다.
https://programmers.co.kr/learn/courses/30/lessons/70129이진 수를 받아서 모든 0을 제거하고, 남은 길이를 다시 2진법으로 변환한 후, 1이 될때까지 계속 반복하면 되는 문제다.reduce를 사용해서 0일 경우 ze