일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dfs
- CORS
- tailwind
- 인터섹션
- 리터럴 타입
- SSR
- 호이스팅
- 타입 좁히기
- Jest
- async/await
- Cypress
- 무한 스크롤
- RTK Query
- map
- 결정 알고리즘
- webpack
- CI/CD
- TS
- 공변성
- Promise
- useAppDispatch
- recoil
- ESlint
- 태그된 유니온
- app router
- 투포인터
- 반공변성
- autosize
- 이분 검색
- React
- Today
- Total
목록전체 글 (510)
짧은코딩
최단 경로 신장 트리가 아닌 가중치 그래프, 즉 네트워크에서 정점 u와 정점 v를 연결하는 경로 중에서 가중치 합이 최소인 경로 다익스트라 최단 경로 알고리즘 그래프가 이렇게 있으면 A B C D E A 0 10 5 INF INF C 0 8 5 14 7 E 0 8 5 13 7 B 0 8 5 9 7 A C E B D 순서대로 방문하게된다. -최단 경로 트리 최단 경로 트리이다. 플로이드 최단 경로 알고리즘
const clockTitle = document.querySelector(".js-clock"); function getTime() { const xmas = new Date("2022-12-25 00:00:00+0900"); const today = new Date(); const dday = xmas - today; const day = String(Math.floor(dday / (1000 * 60 * 60 * 24))).padStart(2, "0"); const hour = String(Math.floor((dday / (1000 * 60 * 60)) % 24)).padStart(2, "0"); const min = String(Math.floor(((dday / 1000) * 60) % 60)..
if문 function isKoreanFood(food) { if (["불고기", "떡볶이", "비빔밥"]).includes(food)) { return true; } } includes를 사용하면 그 배열 안에 들어있는 것인지 아닌지 확인이 가능하다. 비 구조화 할당 -배열 let [one, two, three, four = "four"] = ["one", "two", "three"]; 이 코드는 one에 "one"이 들어가고 two에 "two" 이렇게 순서대로 들어간다. 그리고 왼쪽에서 마지막에 ="four"의 의미는 오른쪽 값이 부족하여 할당이 안되면 기본값으로 할당하라는 의미이다. let a = 10; let b = 20; [a, b] = [b, a] 두 값의 변수를 서로 바꿔야하면 이렇게 간단하..
n, m = map(int, input().split()) ary = [] for i in range(n): x = list(map(int, input())) ary.append(x) def dfs(x, y): #범위 체크 if x = n or y = m: return False #방문했는지 체크 if ary[x][y] == 1: return False #상하좌우 탐색 ary[x][y] = 1 dfs(x-1, y) dfs(x, y-1) dfs(x+1, y) dfs(x, y+1) return True count = 0 for i in range(n): for j in range(m): if dfs(i, j): count += 1 print(count) (0, 0)부터 DFS 탐색으로 좌우앞뒤를 재귀적으로..
const getRange = document.querySelector(".Range input"); const getNumInput = document.querySelector(".NumInput input"); const playBtn = document.querySelector('.NumInput Button'); const Result = document.querySelector('.Result span'); playBtn.addEventListener('click', () => { if (getRange.value && getNumInput.value && getNumInput.value >= 0) { const RandomValue = Math.round(Math.random() * getRa..
안보고 만들어 봤는데 몇몇 부분에서 실수를 했다. 그것들을 정리하려고 한다. .navbar { display: flex; justify-content: space-between; padding: 8px 12px; background-color: var(--background-color); align-items: center; } 전체에 align-items: center;을 해야 반응형 창을 만들 때 영향을 안준다. const toggleBtn = document.querySelector(".nav__toggleBtn"); const menu = document.querySelector(".nav__menu"); const icon = document.querySelector(".nav__icon"); ..
심볼형 자바스크립트는 객체 프로퍼티 키로 문자형과 심볼형만 허용한다. -심볼(symbol) 심볼은 유일한 식별자를 만들고 싶을 때 사용한다. Symbol()을 사용하면 심볼값을 만들 수 있다. // 심볼 id에는 "id"라는 설명이 붙습니다. let id = Symbol("id"); 심볼 이름은 디버깅 시 아주 유용하다. 심볼은 유일성이 보장되는 자료형이라 설명이 같은 심볼이 여러 개라도 각 심볼값은 다르다. let id1 = Symbol("id"); let id2 = Symbol("id"); alert(id1 == id2); // false 따라서 같은 설명이라도 비교하면 false가 나온다. 심볼은 문자형으로 자동 형 변환되지 않는다. let id = Symbol("id"); alert(id); //..
이진 트리 -모든 노드의 차수를 2 이하로 제한하여 전체 트리 차수가 2 이하 -이진 트리의 모든 노드는 왼쪽 자식 노드와 오른쪽 자식 노드만 가짐(공백 노드도 자식으로 취급) -0
옵셔널 체이닝 옵셔널 체이닝(optional chaining) ?.을 사용하면 프로퍼티가 없는 중첩 객체를 에러 없이 접근 가능하다. -옵셔널 체이닝이 필요한 이유 let user = {}; // 주소 정보가 없는 사용자 alert(user.address.street); // TypeError: Cannot read property 'street' of undefined 이런 경우에 에러가 발생한다. 과거에 옵셔널 체이닝이 없을 땐 && 연산자를 사용했다. let user = {}; // 주소 정보가 없는 사용자 alert( user && user.address && user.address.street ); // undefined, 에러가 발생하지 않습니다. 이렇게 AND 연산자를 사용하면 코드가 아주 ..
new 연산자와 생성자 함수 -생성자 함수 생성자 함수와 일반 함수의 기술적인 차이는 없다. 하지만 두 관례가 있다. 함수의 첫 글자는 대문자 반드시 'new' 연산자를 붙여 실행 function User(name) { // this = {}; (빈 객체가 암시적으로 만들어짐) // 새로운 프로퍼티를 this에 추가함 this.name = name; this.isAdmin = false; // return this; (this가 암시적으로 반환됨) } let user = new User("보라"); alert(user.name); // 보라 alert(user.isAdmin); // false 위 코드에 있는 주석은 new User가 실행되면 무슨 일이 일어나는지를 써 놓은 것이다. this 객체가 암시..