일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- 토익 900
- 회고
- 타임어택
- 타입스크립트
- Async
- js
- 토익
- 파이썬
- 렛츠기릿 자바스크립트
- codestates
- 알고리즘
- 코어 자바스크립트
- 리덕스
- HTTP
- 정재남
- programmers
- 4주 프로젝트
- til
- LeetCode
- 코드스테이츠
- 2주 프로젝트
- 타입스크립트 올인원
- 리액트
- 손에 익히며 배우는 네트워크 첫걸음
- 프로그래머스
- 자바스크립트
- 제로초
- SQL 고득점 Kit
- javascript
- Today
- Total
목록Problem Solving (199)
Jerry
셀프 넘버 const selfNums = []; const main = () => { for (let i = 1; i
1. 최소, 최대 let input = require('fs').readFileSync('/dev/stdin').toString().split('\n'); let len = Number(input[0]); let resultMinMax = input[1].split(' ').reduce((minMax, num) => { const number = parseInt(num); minMax[0] = minMax[0] > number ? number : minMax[0]; minMax[1] = minMax[1] < number ? number : minMax[1]; return minMax; }, [1000000, -1000000]); console.log(resultMinMax.join(' ')); 2. 최댓..
Psuedo Code /* lcm(least common multiple) arr 요소들의 최소공배수를 구하라 1. gcd(great common dividor) 구한다. - 수가 3개 이상일 때(다항식), gcd 구하는 법을 찾아보자 2. lcm을 구하자 - 수가 3개 이상일 때(다항식), lcm 구하는 법을 찾아보자 */ Submit Code function gcd(a, b) { if (a === 0) return b; return gcd(b % a, a); } function lcm(a, b) { return (a * b) / gcd(a, b); } function solution(arr) { let result = 1; for (let i = 0; i < arr.length; i++) { resu..
Pseudo Code /* loop start 2중 루프 바깥 포문은 skill 기준 내부 포문은 skill_trees 기준 skill 각 요소를 기준으로, 각 skill_trees의 해당 skill 요소 위치를 찾아서 빈 배열에 담는다. loop end loop start 배열을 다시 탐색하여 각 요소의 idx 순서가 오름차순이면 통과(counting) 그렇지 않으면, 미통과 loop end return cnt; 종료 */ Submit Code function solution(skill, skill_trees) { let arr = new Array(skill_trees.length).fill(''); for (let y = 0; y < skill.length; y++) { for (let x = 0;..
Pseudo Code /* 1. n을 3진법으로 변환 - n이 0이 될 때까지, 나누어준다. - 각 나머지를 문자열로 만들어 unshift로 더해준다. 2. 1의 결괏값 뒤집기 - reverse를 이용한다. 3. 2의 결과값, 10진법으로 변환 - 결과값의 마지막 요소부터 첫 번째 요소 순으로 탐색한다. (각 요소는 전 요소의 제곱) - 각 요소의 값 * (3^idx) - sum 변수를 이용해서 각 요소의 값을 누적값을 만든다. 4. 3의 결과값을 반환 */ First Try 테스트 10이 통과가 안 되었다. 찾아보니, 큰 수가 들어올 경우에 sum이 너무 커진 게 문제였다. Because JavaScript's numbers are IEEE-754 double-precision binary floati..
혹시 틀린 점이나 의견주시고 싶으시면 편하게 말씀해주시면 감사하겠습니다 😀 문제 문자열 압축(비손실 압축): 연속된 값의 문자의 개수를 반복되는 값으로 표현 조건 1은 생략 문자열을 1개 이상의 단위로 잘라서 압축 이 중 가장 짧은 문자열의 길이를 반환 1개 이상 단위 to 주어지는 문자열의 길이 / 2의 범위를 가진다. //! first try function solution(s) { let arrForLen = []; let arrForEachUnit = []; while (1) { let strLen = 1; let cnt = 0; let tempStr = ""; for (let q = 0; q < s.length; q += 1) { for (let t = 0; t < s.length; t += s..
Divide and Conquer 분할 정복은 알고리즘의 전형적인 예 중 하나다. 보통 분할 정복 알고리즘은 아래 3가지 단계를 거친다.1. 분할하기(divide: 주어진 문제를 같은 형식의 하위 문제로 쪼갠다.2. 정복하기(conquer): 재귀적으로 하위 문제를 해결한다.3. 합치기(combine): 정답을 적절히 조합한다. 고전적인 분할 정복의 예로 병합 정렬(merge sort)이 있다. 병합 정렬은 배열을 두 반쪽으로 나누고, 재귀적으로 두 반쪽을 정렬하고 나서 정렬된 두 반쪽을 병합(merge)한다. https://youtu.be/2Rr2tW9zvRg 이 영상의 Abdul Bari 선생님이 Divide And Conquer에 대해 설명해주는 영상이다.위에서 이야기했듯이 문제 P를 임의적으로 K..
먼저, DFS에 대해서 알아보겠습니다. DFS는 Depth First Search에 약자입니다. 우리말로, '깊이우선탐색'이라고 부릅니다. (그래프) 깊이우선탐색은 (트리) 깊이우선탐색과 비슷합니다. 트리와 다르게, 그래프(graph) 유일한 문제은 사이클(주기)이 포함될 수 있으며 노드를 두 번 방문할 수 있다는 것입니다. 노드를 한 번 이상 방문을 피하려면, 방문한 배열에 불린(boolean)를 사용하는 것입니다. ex) Input: n = 4, e = 6 2 -> 0, 0 -> 2, 1 -> 2, 0 -> 1, 3 -> 3, 1 -> 3 Output: DFS from vertex 2 : 2 0 1 3 Explanation: DFS Diagram: 접근 방식 DFS는 그래프 데이터 구조나 트리 탐색에..