일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬
- Clean Architecture
- 오토레이아웃
- iOS개발
- 그리디 알고리즘
- 앱개발
- Android
- Algorithm
- BFS
- Python
- ios
- dfs
- 알고리즘
- Swift공부
- 프로그래머스
- 알고리즘 공부
- 안드로이드 공부
- Autolayout
- 정렬
- UIKit
- error
- SwiftUI
- Level 1
- 파이썬 풀이
- Kotlin
- 백준 온라인 저지
- greedy algorithm
- 백준온라인저지
- swift
- 공부
- Today
- Total
목록Algorithm/프로그래머스 문제 풀이 (9)
Tori의 개발 공부
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/42628🛠 문제 상황프로그래머스에서 해당 문제를 풀기 위해서는 최댓값과 최솟값을 모두 O(1)로 조회하면서도 O(log N)으로 삽입/삭제가 가능한 자료구조가 필요했습니다.기존의 단일 우선순위 큐(Heap)만으로는 한쪽 방향의 정렬만 유지할 수 있어, 최댓값과 최솟값을 동시에 효율적으로 관리할 수 없었습니다.✅ 해결 방법최대 힙(Max Heap)과 최소 힙(Min Heap)을 동시에 유지하는 Dual Heap을 구현했습니다. 이중 우선순위 큐는 두 개의 힙을 사용하여 최댓값과 최솟값을 빠르게 찾을 수 있도록 합니다.📌 핵심 아이디어최소 힙(minHeap): 최솟값을 빠르게 조회하기 위한 ..

문제 파이썬 풀이 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안에 들어 있는 귤의 개..

문제 파이썬 풀이 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번째 인덱스 값을 추가해준다.

문제 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..