알고리즘
-
new Set으로 배열 중복 데이터 제거하기(feat. 폰켓몬)algorithm 2022. 3. 6. 18:14
문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택 첫..
-
-
-
알고리즘 수학, 순열과 조합, GCD / LCM, 멱집합, 정규표현식Topic/Data Structure 2022. 1. 19. 21:33
순열과 조합 ✔️ 순열 ☑️ 순서를 생각하며 결과를 만드는 경우의 수 5장에서 3장을 선택하는 모든 순열의 수 = 5P3 = (5 X 4 X 3 X 2 X 1) / (2 X 1) = 60 일반식: nPr = n! / (n - r)! 조합 ☑️ 순서를 고려하지 않고 결과를 만드는 경우의 수 순열로 경우의 수를 만든 경우에서 중복된 경우를 나누어주면 조합을 얻을 수 있다. 5장에서 3장을 무작위로 선택하는 조합에서 모든 경우의 수 = 5C3 = 5! / (3! * 2!) = 10 일반식: nCr = n! / (r! * (n - r)!) GCD / LCM ✔️ GCD ☑️ 최대 공약수: 둘 이상의 공약수 중에서 최대인 수 문제: Mask States 방역용 마스크를 제작/판매하는 Mask Man 사는 이례적인..
-
자료구조 알고리즘 문제 (다시 보기)algorithm 2022. 1. 11. 17:19
문제 1 피보나치 수열을 순차적으로 출력하는 클로저 형태의 함수를 작성하기. * 출력 : 호출될 때마다 다음 피보나치 수를 리턴하는 함수를 리턴해야 한다. * 주의 사항 : 피보나치 수는 0과 1로 시작하며, 다음 피보나치 수는 바로 앞의 두 피보나치 수의 합이 됩니다. * 예시) 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... : 리턴되는 클로저 내부 함수(inner function)의 구현은 recursive 혹은 iterative한 방법 중 어떤 것이어도 괜찮습니다. * 입출력 예시 const fn = test1(); console.log(fn()); // --> 0 console.log(fn()); // --> 1 console.log(fn()); // -..
-
재귀함수 문제Topic/JavaScript 2021. 12. 18. 22:58
재귀함수 사례 재귀함수 문제_1 function unpackGiftbox(giftBox, wish) { for (let i = 0; i < giftBox.length; i++) { if (giftBox[i] === wish) { return true } else if (Array.isArray(giftBox[i])) { let result = unpackGiftbox(giftBox[i], wish); if (result) return true; } } return false; } 주어진 선물박스와 위시가 일치하는지 확인하는 문제이다. giftBox가 이렇게 주어지고 ['macbook', ['eyephone', [], ['postcard']], 'iphone']; wish로 'iphone'을 원한다면 ?..
-
자료구조 ( Tree, Graph, BST, BFS, DFS )Topic/Data Structure 2021. 12. 17. 22:19
Tree Traversal 전위 순회 가장 먼저 루트를 방문하고, 루트에서 시작해 왼쪽 노드부터 먼저 둘러본 뒤, 왼쪽 노드 탐색이 끝나면 오른쪽 노드를 탐색한다. 중위 순회 루트를 가운데에 두고 순회한다. 제일 왼쪽 끝에 있는 노드부터 순회하기 시작해 루트를 기준으로 왼쪽에 있는 노드의 순회가 끝나면 루트를 거쳐 오른쪽에 있는 노드로 이동하여 마저 탐색합니다. 후위 순회 루트를 가장 마지막에 순회한다. 제일 왼쪽 끝에 있는 노드부터 순회하기 시작해 루트를 거치지 않고 오른쪽으로 이동해 순회한 뒤, 제일 마지막에 루트를 방문합니다. BFS / DFS 그래프의 탐색은 하나의 정점에서 시작하여 그래프의 모든 정점들을 한 번씩 방문(탐색)하는 것이 목적이다. BFS: Breadth-First Search, 너..
-
알고리즘, 자료구조, stack, queueTopic/Data Structure 2021. 12. 17. 09:08
자료구조 기초 자료구조: 여러 데이터의 묶음을 저장하고, 사용하는 방법을 정의한 것. 대표적인 자료구조 네 가지 Stack, Queue, Tree, Graph 자료구조는 어떤 특정 상황에 놓인 문제를 해결하는데 특화되어있다. 많은 자료구조를 알아두면, 어떤 상황이 닥쳤을 때 적합한 자료구조를 바로 적용하여 해결할 수 있다. Stack (스택) 데이터(data)를 순서대로 쌓는 자료구조다. 금은동 메달을 각각 책상에 쌓는다고 생각해보자 첫번째로 금, 다음은 은,동 순서로 쌓고, 우리가 다시 그 메달을 집을 때 어떤 메달부터 잡아야 할까? 동메달부터 잡고, 은메달, 마지막으로 금메달을 잡을 수 있다. 이러한 방식처럼 가장 먼저 쌓은 메달은 가장 나중에 잡을 수 있는 경우가 스택이다. 스택의 특징은 입력과 출..