일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트
- 코딩테스트
- 수코딩
- sucoding
- MDN
- React
- radixui
- 공식문서
- tanstack query
- JavaScript
- 라이브러리
- stompjs
- pnpm
- @stomp/stompjs
- frontend
- shadcn
- 프론트엔드
- 리액트프로젝트
- npm
- Server State
- 배열메서드
- 스나이퍼팩토리
- 프로젝트
- 상태 관리 라이브러리
- TypeScript
- 프로젝트캠프
- 배열
- React Query
- 실시간통신
- 컴포넌트설계
- Today
- Total
목록Coding Test (54)
yunicornlab
문제N x N 크기의 2차원 배열을 생성하려고 아래와 같이 코드를 작성했다.let grid = Array.from({ length: N }).fill( Array.from({ length: N }).fill(0)); 그런데 웬걸, grid[0][0] = 1을 했더니 모든 행의 grid[i][0]도 1로 변하는 문제가 생겼다.문제는 fill() 메서드에 있었다.fill()로 배열 안에 배열을 생성하면 얕은 복사가 되어 모든 행이 동일한 배열을 참조하게 되는 것이다. 수정먼저 결론을 말하자면, 이런 문제가 발생되지 않기 위해 각 행을 개별적으로 생성해야한다. 올바르게 수정한 코드는 아래와 같다.let grid = Array.from({ length: N }, () => Array.from({ l..

코딩 테스트에서 효율적인 알고리즘을 작성하려면 시간복잡도를 이해하는 것이 필수다.상위 문제일수록 주어진 문제를 해결하는 데 얼마나 빠르게 동작하는지를 고려해야 한다. 시간복잡도란?시간복잡도(Time Complexity)란 입력값이 증가할 때 알고리즘의 실행 시간이 어떻게 변하는지를 나타내는 척도이다.입력 크기의 값에 대해 단위 연산을 몇 번 수행하는지 계산해서 알고리즘의 수행 시간을 평가하는 방법이다.대부분은 시간복잡도를 수학적으로 표현할 때 빅오 표기법(Big-O Notation)을 사용한다.빅오는 최악의 경우를 기준으로 알고리즘의 성능을 분석하는 방식이다. 가장 많이 쓰는 것은 빅오 표기법이지만, 그 외에도 다양한 표기법이 있다.1. 빅오(Big-O) 표기법최악의 경우(Worst Case)를 기준으로..

준비 단계1. 사용 언어 문법 및 특징 숙지코딩 테스트에서 사용할 언어를 하나 정하고, 해당 언어의 문법과 주요 기능을 익혀야 한다. 다음과 같은 사항을 숙지하는 것이 중요하다.변수 및 자료형: 정수, 실수, 문자열, 리스트, 딕셔너리 등조건문과 반복문: if, for, while 등의 기본 흐름 제어함수 및 재귀 호출: 함수의 정의와 활용, 재귀 함수 이해라이브러리 활용: 정렬, 수학 연산, 데이터 구조 관련 기본 라이브러리언어별 특징: 파이썬(Python)의 리스트 컴프리헨션, 자바(Java)의 컬렉션 프레임워크 등2. 시간복잡도 이해효율적인 알고리즘을 설계하려면 시간복잡도를 이해해야 한다.시간복잡도는 알고리즘이 실행되는 데 걸리는 시간을 대략적으로 분석하는 방법이다.빅오 표기법(Big-O Notat..

백준 1300번 K번째 수 문제를 자바스크립트로 이진 탐색 알고리즘을 이용해서 풀어보았다. https://www.acmicpc.net/problem/1300 어려웠다 ㅠㅠㅠ만약 B 배열이 [1, 2, 2, 3, 3, 4, 6, 6, 9] 이렇게고, k=7이면 답은 6이다.→ mid = 5로 시작해서, 5(mid)보다 작거나 같은 데이터의 수가 7(k)개 이상이 될 때, 이 mid를 출력하면 답이다.-> mid = 5일 때는, 5보다 작거나 같은 데이터의 수가 6개이고, 이 개수가 k=7보다 작으므로 mid값을 증가시키기 위해 start = mid + 1 해줘야 함반대로, 개수가 k보다 크면 mid 값을 감소시켜줘야 하므로 end = mid 해줘야 함 1) 실패 -> mid보다 작거나 같은 데이터의 수를..
백준 10816번 숫자 카드 2 문제를 자바스크립트로 이진 탐색 알고리즘을 이용해서 풀어보았다. https://www.acmicpc.net/problem/10816 1) 이진 탐색 안쓰고 단순 구현 -> 이 코드도 통과됨let fs = require("fs");let input = fs.readFileSync('/dev/stdin').toString().trim().split("\n");// 가지고 있는 숫자 카드 N개let n = Number(input[0]);let have = input[1].split(' ').map(Number);// 비교할 숫자 카드 M개let m = Number(input[2]);let stand = input[3].split(' ').map(Number);let countM..
백준 3190번 뱀 문제를 자바스크립트로 BFS 알고리즘을 이용해서 풀어보았다. https://www.acmicpc.net/problem/3190 으아 복잡해let fs = require("fs");let input = fs.readFileSync('/dev/stdin').toString().trim().split("\n");class Queue { constructor() { this.items = {}; this.head = 0; this.tail = 0; } enqueue(element) { this.items[this.tail] = element; this.tail++; } dequeue() { const element = this.items[this.he..
백준 16234번 인구 이동 문제를 자바스크립트로 BFS 알고리즘을 이용해서 풀어보았다. https://www.acmicpc.net/problem/16234 let fs = require("fs");let input = fs.readFileSync('/dev/stdin').toString().trim().split("\n");class Queue { constructor() { this.items = {}; this.head = 0; this.tail = 0; } enqueue(element) { this.items[this.tail] = element; this.tail++; } dequeue() { const element = this.items[this.he..
백준 16953번 A -> B 문제를 자바스크립트로 BFS 알고리즘을 이용해서 풀어보았다. https://www.acmicpc.net/problem/16953 let fs = require("fs");let input = fs.readFileSync('/dev/stdin').toString().trim().split("\n");class Queue { constructor() { this.items = {}; this.head = 0; this.tail = 0; } enqueue(element) { this.items[this.tail] = element; this.tail++; } dequeue() { const element = this.items[this.h..
백준 2638번 치즈 문제를 자바스크립트로 BFS 알고리즘을 이용해서 풀어보았다. https://www.acmicpc.net/problem/2638 let fs = require("fs");let input = fs.readFileSync('/dev/stdin').toString().trim().split("\n");class Queue { constructor() { this.items = {}; this.head = 0; this.tail = 0; } enqueue(element) { this.items[this.tail] = element; this.tail++; } dequeue() { const element = this.items[this.head]; ..
백준 5567번 결혼식 문제를 자바스크립트로 BFS 알고리즘을 이용해서 풀어보았다. https://www.acmicpc.net/problem/5567 let fs = require("fs");let input = fs.readFileSync('/dev/stdin').toString().trim().split("\n");class Queue { constructor() { this.items = {}; this.head = 0; this.tail = 0; } enqueue(element) { this.items[this.tail] = element; this.tail++; } dequeue() { const element = this.items[this.head];..