🧐 알고리즘 7

[kotlin] 가장 가까운 같은 글자

문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다. n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다. a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다. 이..

과일 장수 - kotlin

과일 장수가 사과 상자를 포장하고 있습니다. 사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. 사과 한 상자의 가격은 다음과 같이 결정됩니다. 한 상자에 사과를 m개씩 담아 포장합니다. 상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m 입니다. 과일 장수가 가능한 많은 사과를 팔았을 때, 얻을 수 있는 최대 이익을 계산하고자 합니다.(사과는 상자 단위로만 판매하며, 남는 사과는 버립니다) 예를 들어, k = 3, m = 4, 사과 7개의 점수가 [1, 2, 3, 1, 2, 3, 1]이라면, 다음과 같이 [2, 3, 2, 3]으로 구성된 사과 상자 1개를 만들어 판매하여 최대 이익을 얻을..

[Algorithm] 대칭수 확인하기

대칭수를 확인해보는 알고리즘 가운데 숫자를 기준으로 서로 대칭하는 숫자인지 확인 예를 들어, 121 => True 1221 => True -121 => 121- False 입력받는 값 : n 생각한 과정 1. 문자열로 변경 2. 문자열로 변경한 뒤 중간을 기준으로 substring 3. 앞 배열 , 뒤 배열을 만든 뒤 뒤의 배열을 reverse해서 비교 놓친 과정 1. 가운데 기준으로 같다면 substring을 거치지 않아도 됨 2. 문자열 자체를 하나의 배열로 생각해서 reverse 시켰을 때가 같으면 대칭수 3. 배열 자체를 비교하지 말고, contentEquals를 사용해 내용 자체를 비교 다시 생각한 과정 1. 음수가 되면 -가 붙어서 대칭이 될 수 없으므로 양수인 경우만 로직을 타게 2. 우선 ..

[자료구조] 🚀 우선순위 큐 & 힙(Heap)

2022.07.26 - [👩🏻‍💻 Develop] - [자료구조] 🚀 이진트리(Binary Tree) [자료구조] 🚀 이진트리(Binary Tree) 2022.07.25 - [🧐 알고리즘] - [자료구조] 트리(Tree) [자료구조] 트리(Tree) 트리(Tree) 🌲 노드,간선으로 이루어진 비선형 자료 구조 💡 트리의 특징 • 부모노드, 자식노드와 같이 계층구조로 표현되 kong-droid.com ✍️ 우선순위 큐 (Priority Queue) Queue는 FIFO를 따르지만, 우선순위 큐는 FIFO를 따르지 않고, 우선순위가 높은 데이터를 먼저 출력합니다 Heap을 사용하여 처리합니다 (시간복잡도가 가장 짧습니다) ✍️ 힙 (Heap) - 완전 이진 트리를 기초로 하며, 최소 혹은 최대값을 빠르게 찾..

🧐 알고리즘 2022.07.27

[자료구조] 🚀 이진트리(Binary Tree)

2022.07.25 - [🧐 알고리즘] - [자료구조] 트리(Tree) [자료구조] 트리(Tree) 트리(Tree) 🌲 노드,간선으로 이루어진 비선형 자료 구조 💡 트리의 특징 • 부모노드, 자식노드와 같이 계층구조로 표현되는 비선형 자료구조 • 탐색에 주로 사용 • 루트노드를 제외한 모든 kong-droid.com 트리 자료구조에 이어 이진트리에 대해 알아보겠습니다 🚀 이진트리 (Binary Tree) 영어에서 유추해볼 수 있듯이 이진트리는 💡 모든 노드가 자식 노드를 최대 2개를 가질 수 있는 트리 특징 • n개의 노드는 n-1의 간선을 가짐 • 자식노드는 공백이 될 수도 있음 • 레벨(a)에서 가질 수 있는 최대 노드의 갯수는 2ª 종류 📌 전 이진 트리 (Full Binary Tree) - 각 레..

🧐 알고리즘 2022.07.26

[자료구조] 트리(Tree)

트리(Tree) 🌲 노드, 간선으로 이루어진 비선형 자료 구조 📎 트리의 용어 1. 노드(node): 트리를 구성하는 기본 원소 루트 노드 : 트리의 최상위 노드 자식 노드 : 어떤 노드 바로 밑에 연결된 노드 부모 노드 : 어떤 노드 바로 위에 연결된 노드 형제 노드 : 같은 부모 노드를 갖는 노드 리프 노드 : 루트 노드를 제외하고 자식이 없는 노드 (가장 마지막 노드들) 2. 높이 : 루트 노드에서부터 가장 깊은 노드까지의 길이 (루트노드에서부터 1로 시작) 3. 깊이(depth): 루트노드에서 어떤 노드까지 거쳐야 하는 간선의 수 4. 레벨 : 트리의 특정 깊이를 가지는 노드의 집합, 루트노드(level = 0) 5. 차수(degree) : 각 노드 별 자식 노드의 개수 6. 트리의 차수 : 트리..

🧐 알고리즘 2022.07.25

[자료구조] 스택 , 큐 , 덱

각 자료구조들의 이론과 사용되는 함수에 대해 다뤄보고자 합니다 📌 스택 쉽게 말해 쌓이는 자료 구조로 , LIFO(Last In First Out)을 따릅니다 즉 가장 마지막에 넣는 아이템이 가장 먼저 빼지는 형태입니다 🛠 스택의 함수 • push(아이템) : 아이템을 스택에 삽입 var stack = Stack() stack.push("A") stack.push("B") stack.push("C") • pop(): 스택 가장 위에 있는 아이템을 제거 stack.pop() stack.pop() • peek(): 스택의 가장 위에 있는 아이템을 반환 stack.peek() //return "A" • size: 스택의 사이즈를 반환 • add(idx, item) : idx에 item 삽입 stack.add(..

🧐 알고리즘 2022.07.17