일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 공변성
- 타입 좁히기
- React
- recoil
- 리터럴 타입
- dfs
- TS
- Promise
- map
- 인터섹션
- 결정 알고리즘
- CI/CD
- 무한 스크롤
- webpack
- ESlint
- autosize
- Cypress
- 호이스팅
- app router
- 태그된 유니온
- RTK Query
- 이분 검색
- Jest
- 반공변성
- tailwind
- CORS
- SSR
- useAppDispatch
- async/await
- 투포인터
- Today
- Total
목록코딩테스트 with JS (49)
짧은코딩
코드 function solution(c, stable) { let answer; stable.sort((a, b) => a - b); let lt = 1, rt = stable.slice(-1)[0]; while (lt = ep + mid) { count++; ep = stable[i]; } } if (count >= c) { answer = mid; lt = mid + 1; } else rt = mid - 1; } return answer; } 풀이 방법 이 문제도 이분검색으로 풀어야하는 문제이다. -lt, rt의 정의 두 말 사이의 거리는 [1, 가장 큰 마구간의 좌표]이다. 배열에서 가장 작은 값이 100이어도 다음 숫자는 101부터 올 수 있기 때문에 두 말 사이의 최소값은 1이다. 따라서 lt..
코드 function count(songs, mid) { let album = 1, sum = 0; for (let x of songs) { if (sum + x > mid) { album++; sum = x; } else sum += x; } return album; } function solution(m, songs) { let answer; let lt = Math.max(...songs), rt = songs.reduce((a, b) => a + b, 0); while (lt
https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 방법 이 문제를 js로 해결하기 위해서는 투포인터로 풀어야한다. 카카오에서 c++로 풀이를 제공했는데, 이 방식대로 문제를 풀면 js에서는 시간 초과가 떴다. 코드 function add(ary) { return ary.reduce((a, b) => a + b, 0); } function solution(queue1, queue2) { var answer = 0; let total =..
문제 풀이 처음 내가 생각한 풀이 function solution(times) { let answer = 0; let ary = times.slice(); ary.sort((a, b) => a[0] - b[0]); let count = 0; for (let i = 0; i answer) answer = count; } else { count = 0; break; } } } return answer; } 내가 생각한 풀이는 리스트를 들어온 시간 순서대로 정렬하고 처음 들어..
LRU 해결 방법 해결 방법으로는 내장 함수를 사용하지 않는 방법과 내장 함수를 사용하는 방법 2가지가 있다. 나는 이 문제를 처음 풀 때 꼼수를 사용하여 맨 뒤부터 불러오는 방식으로 풀려고 했지만 이 방식은 옳은 방법이 아니였다. 방법1) 내장 함수를 사용하지 않는 방법 1. pos는 히트가 되었는지 안되었는지 확인할 수 있는 변수이다. 만약 pos가 -1이면 히트가 되지 않은 것, pos가 -1이 아니면 히트가 된 것이고 pos에 히트 된 위치를 저장한다. 2. pos가 -1이면 히트가 되지 않았기 때문에 answer에 들어간 모든 값들을 뒤로 한 칸씩 밀어주고 맨 앞에 현재 값을 넣는다. 3. pos가 -1이 아니면 히트가 되었기 때문에 히트 된 앞 부분부터 뒤로 한 칸씩 밀어주고 맨 앞에 현재 값..
해결법 이 문제는 일단 왕자의 수 만큼 배열에 넣어둔다. 그리고 우선 k-1만큼 앞 왕자를 빼서 뒤로 보낸다. 그리고 k번째 왕자가 있는 숫자를 제거한다. 이것을 1명의 왕자가 남을 때 까지 반복하면 된다. 코드
해결법 이 문제는 스택으로 해결할 수 있다. 만약 괄호가 "("이면 스택에 넣는다. 그러다가 ")"를 만나면 2가지 케이스로 나뉜다. 우선 무조건 스택에 있는 "(" 1개를 삭제한다. 그리고 앞이 "("이면 레이저라서 스택에 있는 "(" 개수만큼 answer에 더해준다. 앞이 ")"이면 막대가 끝난거라서 잘리고 남아있는 막대 1개를 answer에 더해준다. 코드
모든 이나그램 찾기 해결법 이 문제는 해쉬, 투포인터를 활용해서 풀어야 하는 문제이다. 처음에 생각한 풀이와 답의 로직이 한 70% 정도는 유사했다. 하지만 해쉬의 자료구조인 Map를 비교할 때가 문제였다. 그래서 처음에는 배열로 바꿔서 비교했지만 쉽지 않았고 해결하지 못했다. 강사님의 코드를 보면 두 Map 중 하나를 for문으로 돌리고 나머지 Map를 맞춰보는 형식으로 풀었다. Map은 valuse 값이 0이 된다고 해서 삭제되는 것이 아니기에 만약 value가 0이면 delete로 삭제해줘야 한다. 코드
해결법 처음에 나는 이 문제를 객체를 이용해서 풀었다. 하지만 이 문제는 Map이란 자료구조를 사용하면 쉽게 풀 수 있다. let hash = new Map(); 이렇게 생성할 수 있다. hash.has(x): x가 포함되어 있는지 알 수 있다. hash.set(x, 1): x라는 문자를 1로 초기화해준다. hash.get(x): x의 key 값을 가져와 준다. 코드