일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- python
- 알고리즘
- 제로초
- codestates
- 코어 자바스크립트
- LeetCode
- Async
- 타입스크립트 올인원
- 회고
- 백준
- 정재남
- 타입스크립트
- js
- 타임어택
- programmers
- 자바스크립트
- 2주 프로젝트
- 리덕스
- til
- 리액트
- 프로그래머스
- 손에 익히며 배우는 네트워크 첫걸음
- javascript
- 4주 프로젝트
- 파이썬
- 토익
- SQL 고득점 Kit
- 렛츠기릿 자바스크립트
- 코드스테이츠
- 리트코드
- Today
- Total
목록Problem Solving (205)
Jerry
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는 그래프 데이터 구조나 트리 탐색에..
😃 오늘은 스택과 큐에 대해서 알아보겠습니다! 먼저, 자료구조는 데이터의 표현과 저장 방법을 의미합니다. 알고리즘은 저장된 데이터를 처리하는 과정입니다. 그러므로, 자료구조를 알아야 알고리즘을 배울 수 있습니다. 자료구조 중 하나로 배열이 있습니다! 자료구조에는 연결리스트, 스택, 큐 등이 있지만, 배열이 이것들을 모두 표현할 수 있습니다. 한 예로, 연결리스트에 대해서 이야기해보겠습니다. 연결리스트는 여러 개의 노드로 이루어져 있으며, 각 노드에는 데이터와 다음 노드의 주소를 담고 있습니다. 1->2->3->4->5 라는 연결리스트가 있다면, '1, 2, 3, 4, 5'는 데이터고 '->'는 주소를 가리킵니다. 연결리스트는 데이터를 추가/찾거나/제거하는 기능도 있어야 합니다. 자바스크립트 배열로 표현해..
오늘 프로그래머스에서 푼 문제는 "코딩 테스트 연습 -> 해시"로 들어가 푼 문제다. 참가자 그룹 배열이 있고, 참가자 중 완주한 그룹 배열이 있다. (문제는 여기!!) 그 중, 한 명은 완주를 못 한 사람이 발생하는데 이를 구하는 문제라고 해석했다. 수도 코드 p = 참가자 cp = 완주한 참가자 cp.length === p.length - 1 바깥 for문 cnt = 0; 안쪽 for문 if (만약 Cp가 p와 같고, cnt 가 0일 때) { cnt++ 참가자를 삭제한다 } 결국, 남는 참가자는 1명 return p[0]; 소스 코드 function solution(participant, completion) { let answer = ''; for (let j = 0; j < completion.l..