| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- MSA
- dfs
- 반공변성
- autosize
- 무한 스크롤
- CI/CD
- 결정 알고리즘
- 타입 좁히기
- webpack
- 인터섹션
- CORS
- 태그된 유니온
- 리터럴 타입
- 공변성
- tailwind
- 투포인터
- SSR
- map
- useAppDispatch
- 호이스팅
- TS
- ESlint
- React
- app router
- 인증/인가
- async/await
- RTK Query
- Promise
- recoil
- Jest
- Today
- Total
목록분류 전체보기 (523)
짧은코딩
https://www.acmicpc.net/problem/2161 2161번: 카드1 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 내 풀이(맞음) from collections import deque n = int(input()) ary = deque(i for i in range(1, n+1)) cnt = [] while ary: cnt.append(ary.popleft()) if ary: t = ary.popleft() ary.append(t) for i in cnt: print(i, end = " ") deque를 이용..
https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 내 풀이(맞춤) from collections import deque n = int(input()) m = int(input()) dic = {} for i in range(m): a, b = map(int, input().split()) if a not in dic: dic[a] = [b] else: dic[a].append(b) if b not in dic: dic[b] = [a] else: dic..
https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 내 풀이(결국 구글링을 해서 이해했다ㅜㅜ) from collections import deque n = int(input()) ary = [] for i in range(n): ary.append(list(map(int, input()))) #상하좌우 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def bfs(x, y): q = deque() q.append((x, y)) a..
https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 내 풀이(큐를 생각 못했다ㅠㅠ) from collections import deque n, m = map(int, input().split()) ary = [] for i in range(n): ary.append(list(map(int, input()))) dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] def bfs(x,y): q = deque() q.append((x,y)) while q: x, y = ..
async 함수 async는 function 앞에 위치한다. async function f() { return 1; } f().then(alert); // 1 async를 붙이면 해당 함수는 항상 Promise를 반환한다. Promise가 아닌 값을 반환해도 이행상태의 Promise로 값을 감싸 이행된 Promise가 반환된다. await await는 async 함수 안에서만 동작한다. async function f() { let promise = new Promise((resolve, reject) => { setTimeout(() => resolve("완료!"), 1000) }); let result = await promise; // 프라미스가 이행될 때까지 기다림 (*) alert(result);..
Promise let promise = new Promise(function(resolve, reject) { // executor (제작 코드, '가수') }); new Promise에 전달되는 함수는 excutor라고 부른다. excutor는 new Promise가 만들어질 때, 자동으로 실행된다. resolve와 reject는 js에서 자체 제공하는 콜백이다. executor에선 결과를 즉시 얻든 늦게 얻는 인수로 넘겨준 콜백 중 하나를 반드시 호출해야 한다. resove(vlaue): 일이 성공적으로 끝나면 결과는 value와 함께 호출 reject(error): 에러 발생 시 에러 객체 error와 함께 호출 -Promise는 성공 또는 실패만 한다. let promise = new Promis..
https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 내 풀이(맞음) def binary_search(array, target, start, end): mid = (start + end) // 2 if start > end: return None if target == array[mid]: return mid elif target < array[mid]: return binary_search(array, target, ..
전달만하는 prop가 많이 생기면 이름 바꾸기도 어렵고 코드 작성, 수정에 악영향을 끼친다. 이런 상황을 props가 드릴처럼 땅을 파고 들어간다고 보고 Prop Drilling이라고 한다. => 부모에서 자식으로만 데이터를 전달하는 단방향 데이터 흐름이라서 이런 문제가 생긴다. 1. 모든 데이터를 Provider라는 공격자 역할을 하는 컴포넌트에게 전달 2. Provider는 특별해서 자신의 자손들에게 직통으로 데이터를 줄 수 있다. => Prop Diilling이 없어졌다. 3. 자식 컴포넌트들은 Provider에게 직통으로 데이터를 받는다. 따라서 Provider 아래에 존재하는 모든 컴포넌트를 문맥화에 존재한다. Context -예시 const ThemeContext = React.createCo..
해싱 해싱: 산술적인 연산을 이용하여 키가 있는 위치를 계산하여 찾아가는 검색 방식 해시 함수: 키 값을 원소의 위치로 변환하는 함수 해시 테이블: 해시 함수에 의해 계산된 주소의 위치에 항목을 저장한 표 동일한 해시 주소를 가지면 충돌이 일어난다. 해시 함수 -해시 함수의 조건 해시 함수는 계산이 쉬워야하고 충돌이 적어야한다. 헤시 테이블에 고르게 분포할 수 있어야한다. -중간 제곱 함수 예를 들면 제곱하여 중간 자리 수에 있는 값을 해시 주소로 사용한다. -제산 함수 나머지 연산이다. 10, 7, 77, 9를 각각 8로 나누고 그 나머지를 해시 주소로 사용한다. -승산 함수 키 값 k와 정해진 실수 α를 곱한 결과에서 소수점 이하 부분만을 테이블의 크기 M과 곱하여 그 정수 값을 주소로 사용한다. -..
레드 블랙 트리 1. 루트는 블랙이다. 2. 모든 리프는 블랙이다. => 레드 블랙 트리에서 리프는 맨 밑에 노드가 아닌 맨 밑에 숨겨진 자식 노드, 즉 존재하지 않는 NIL을 의미한다. 3. 노드가 레드이면 그 노드의 자식은 반드시 블랙이다. => 노드가 블랙이면 색은 상관없다. 4. 루트 노드에서 임의의 리프 노드에 이르는 경로에서 만나는 블랙 노드의 수는 모두 같다. 오른쪽 그림처럼 NIL에 갈 때 만나는 블랙 노드 개수가 모두 3개로 통일이다. 레드 블랙 트리 삽입 이진검색트리에서의 삽입과 같지만 삽입된 노드는 반드시 레드로 칠한다. -부모가 블랙 문제 없다. -부모가 레드 문제가 발생한다. => 삽입된 노드의 부모의 형제를 확인한다. case1: 부모의 형제가 빨간색인 경우(recoloring)..