본문 바로가기

Algorithm31

[알고리즘 / Swift] 힙 Heap Heap 이란? 데이터에서 최댓값 최솟값을 빠르게 찾기 위해 고안된 완전 이진트리로 우선순위 큐를 위해 만들어진 자료구조 최대힙(max heap) : 부모노드 ≥ 자식노드 최소힙(min heap) : 부모노드 ≤ 자식노드 💡 완전 이진 트리란? 이진트리 = 자식 노드가 최대 두 개인 트리 완전 이진트리 = 마지막 레벨을 제외한 모든 노드가 2개씩 채워져 있으며, 최하단 레벨 또한 좌측부터 채워져있는 노드를 의미한다. 즉 완전 이진트리는 왼쪽부터 자식 노드를 차례로 채운다. index 성질 heap은 완전 이진 트리 구조이기 때문에 노드 간 인덱스 관계를 나타낼 수 있다. → 완전 이진트리는 무조건 왼쪽부터 채워지기 때문에 채워지는 순서가 있음 = index 부모 노드 index = 자식 노드 index .. 2024. 3. 13.
[Level 2] [python] 귤 고르기 문제 파이썬 풀이 from collections import Counter def solution(k, tangerine): cnt = Counter(tangerine) answer = 0 box = 0 for i in cnt.most_common() : box += i[1] answer += 1 if box >= k : break return answer Counter 클래스를 사용하여 문제를 해결하였다. 우선 Counter클래스를 통해 크기 별로 몇 개의 귤을 가지고 있는지 계산을 한다. Counter클래스의 most_common() 메서드를 통해 귤 개수를 내림차순으로 정리한 리스트를 반복문으로 돌며 가장 많은 개수를 가진 귤부터 box에 넣어준다. (box변수는 현재 box안에 들어 있는 귤의 개.. 2022. 11. 24.
[Level 1][python] 명예의 전당 (1) 문제 파이썬 풀이 def solution(k, score): answer = [] scoreList = [] for i in score : scoreList.append(i) scoreList.sort() if len(scoreList) < k : answer.append(scoreList[0]) else : answer.append(scoreList[-k]) return answer score변수에서 하나씩 꺼내어 리스트에 차례로 담고 오름차순 정렬을 진행한다. 그리고 초기 k일이 지나기 전에는 모든 사람들이 명예의 전당에 오르게 되므로 가장 점수가 작은 0번째 인덱스 값을 answer리스트에 추가한다. k일 이후부터는 뒤에서 k번째 점수가 명예의 전당 마지막 점수이므로 -k번째 인덱스 값을 추가해준다. 2022. 11. 24.
[Level 2] [python] 롤케이크 자르기 문제 https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 파이썬 풀이 첫 번째 풀이 (시간 초과) 단순히 for문을 통해 하나씩 차근차근 슬라이싱하며 나눠진 서브 리스트들을 집합 자료형으로 바꿔 중복을 없앤 뒤 길이를 비교하는 방법을 사용하였다. 그러나 대부분의 테스트 케이스에서 시간초과가 발생하였다. def solution(topping): answer = 0 for i in range(1, len(topping)) : a = len(set(t.. 2022. 11. 19.