일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백준
- 파이썬
- 동적계획법
- typescript
- VUE
- python
- CS
- C++
- javascript
- 배열
- 프로그래밍
- OS
- 리트코드
- Doitvue.js입문
- Level3
- LeetCode
- react
- 고득점Kit
- web
- 프로그래머스
- 웹프로그래밍
- 코테연습
- 카카오
- Level1
- 자바스크립트
- Level2
- dp
- sql
- 리액트
- Medium
- Today
- Total
목록분류 전체보기 (364)
청소년 상어 문제 4×4크기의 공간이 있고, 크기가 1×1인 정사각형 칸으로 나누어져 있다. 공간의 각 칸은 (x, y)와 같이 표현하며, x는 행의 번호, y는 열의 번호이다. 한 칸에는 물고기가 한 마리 존재한다. 각 물고기는 번호와 방향을 가지고 있다. 번호는 1보다 크거나 같고, 16보다 작거나 같은 자연수이며, 두 물고기가 같은 번호를 갖는 경우는 없다. 방향은 8가지 방향(상하좌우, 대각선) 중 하나이다. 오늘은 청소년 상어가 이 공간에 들어가 물고기를 먹으려고 한다. 청소년 상어는 (0, 0)에 있는 물고기를 먹고, (0, 0)에 들어가게 된다. 상어의 방향은 (0, 0)에 있던 물고기의 방향과 같다. 이후 물고기가 이동한다. 물고기는 번호가 작은 물고기부터 순서대로 이동한다. 물고기는 한 ..
아기 상어 문제 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크기보다 작은 물고기만 먹을 수 있다. 따라서, 크기가 같은 물고기는 먹을 수 없지만, 그 물고기가 있는 칸은 지나갈 수 있다. 아기 상어가 어디로 이동할지 결정하는 방법은 아래와 같다. 더 이상 먹을 수 있는 물고기가 공간에 없다면 아기 ..
디바운스 (Debounce) 한번 요청된 것으로 기준으로 wait time이 지나지 않으면 다시 요청을 보내지 않는다. 만약 이벤트가 계속 발생하면 타이머가 계속 초기화된다. Leading edge에 실행될지 trailing edge에 실행될지 선택할 수 있다. 주로 ajax 검색에 쓰인다. 쓰로틀 (Throttle) 한번 함수가 실행된 후에 wait time이 지난 이후에만 다시 함수가 실행된다. 함수의 실행 시간과 관련 있다. 주로 스크롤을 올리거나 내릴 때 사용된다. 활용 검색 자동 완성 기능 매번 Request를 보내는 것이 아니라 디바운스나 쓰로틀을 사용하여 request를 보내는 빈도를 조절할 수 있다. 디바운스 : 타이핑을 하는 동안에는 요청을 보내지 않다가 타이핑을 멈추면 요청을 보낸다. ..
React Virtual DOM 작동원리 react는 뒤에서 실제 DOM을 모두 복사해서 virtual DOM을 만든다. 만약 리액트를 이용해서 virtual dom의 어떤 노드를 수정한다면 리액트는 새로운 virtual dom(updated virtual dom)을 만들고 이전 virtual dom 트리와 비교한다. 만약 일치하지 않는 노드를 발견한다면 리액트는 실제 dom 트리에서 해당 노드만 업데이트 시켜준다. https://youtu.be/RquK3TImY9U Virtual DOM이란 브라우저의 렌더링 엔진은 DOM 트리가 수정될 때마다 새로운 렌더 트리와 레이아웃을 생성하고 repaint 해야하기 때문에 동적 UI의 경우 성능이 저하될 수 있다. 이러한 이슈를 해결하기 위해 나온 것이 Virtu..
기초 개발상식 객체 지향 프로그래밍이란 무엇인가? RESTFul API 란? API, 라이브러리, 프레임워크 TDD 란 무엇이며 어떠한 장점이 있는가? 함수형 프로그래밍이란? MVC 패턴이란 무엇인가? Git 과 GitHub 에 대해서 객체 지향 프로그래밍이란 무엇인가? 객체지향프로그래밍이란? 프로그래밍 개발방법론 사람이 현실을 바라보는 방법을 개발에 접목 직관적으로 이해하기 쉽다 유지 보수를 용이하게 만든다. 객체들은 서로 협력하고, 역할을 맡아 책임을 수행하여 문제 상황을 해결한다. 객체가 자율적으로, 능동적으로 행동할 수 있다. 자율적으로 메시지를 처리하기 위해서 자신의 책임을 수행하는데 필요한 데이터와 프로세스를 가지고 있다. 객체란? 객체는 현실의 무언가에 대응하는 개념 class는 객체를 표현..
데이터베이스 면접 대비 데이터베이스 데이터베이스를 사용하는 이유 이전 파일시스템의 데이터 종속성 문제와 중복성, 무결성 문제를 해결하기 위해 데이터 베이스를 사용한다. 데이터 베이스는 다음과 같은 특징을 가진다. 데이터 독립성 데이터의 무결성 데이터의 보안성 데이터의 일관성 데이터 중복 최소화 인덱스 빠른 데이터 검색을 위해 컬럼의 값과 해당 레코드가 저장된 주소를 key-value 쌍으로 인덱스를 만들어두는 것이다. 인덱스가 왜 필요한지 데이터는 디스크로부터 가져오게 된다. 자주 쓰일 경우 매번 조회하는 것은 비효율적이므로 컴퓨터는 자주 사용되는 테이블을 메모리에 올린다. 메모리에 데이터가 있다면 빠르게 가져올 수 있지만 없다면 디스크 전체를 스캔해야하며 이것을 풀 테이블 스캔이라고 한다. 대용량 데이..
프론트엔드 면접 대비 (자바스크립트) var, let, const 차이 Var var는 이전에 변수를 선언하는 방식으로 더 이상 권장되지 않는다. var는 기존에 선언된 변수의 값을 덮어쓰며, 함수 스코프를 기준으로 동작한다. 문제점 var의 경우 변수를 선언할 때 선언과 초기화가 동시에 이뤄지기 때문에 호이스팅이 가능하게 된다. 블록 스코프를 무시하기 때문에 문제를 일으킬 수 있다. let es6에 새롭게 추가된 변수 선언 방식으로 블록 스코프를 가지며 선언, 초기화, 할당이 따로 이루어지기 때문에 호이스팅이 불가능하다. 재선언을 허용하지 않는다. const es6에 새롭게 추가된 변수 선언 방식으로 불변값을 가진다. let과 마찬가지로 블록 스코프를 가지며 호이스팅이 불가능하고 재선언을 허용하지 않는..
운영체제 면접 대비 운영체제란 운영체제란 하드웨어와 응용프로그램 사이에서 인터페이스 역할을 하며 시스템의 동작을 제어하는 시스템 소프트웨어이다. 자원을 효율적으로 관리한다. (자원 관리) 추상화된 인터페이스를 통해 프로그램을 사용할 수 있도록 한다. (시스템 관리) 운영체제는 자원 관리자라고 불리며 커널 함수를 실행하면서 스위칭한다. 기능 프로세스 관리 프로세스 스케줄링 및 동기화 프로세스 생성 제거, 시작과 정지 스케줄링 IPC 통신 : 프로세스들끼리 통신하는 것 기억장치 관리 메모리 관리 가상메모리 파일시스템 네트워킹 TCP/IP 및 기타 프로토콜 지원 사용자 관리 계정관리 접근 권한 관리 디바이스 드라이버 시스템의 자원, 하드웨어를 관리한다. 프로세스와 스레드의 차이 프로세스 vs 프로그램 프로그램..