<< 문제 >>
https://school.programmers.co.kr/learn/courses/30/lessons/138476
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
귤의 배열을 받아 최소 몇가지 종류로 k개를 고를 수 있는지 확인하는 문제입니다.
각 귤 종류별로 개수를 정리하고, 개수를 priority_queue에 넣어서 개수가 큰 것부터 꺼냈습니다.
확실히 자료구조 사용에 익숙해지니 이런 문제는 쉽게 해결할 수 있네요.
STL 최고
<< 코드 >>
#include <string>
#include <vector>
#include <queue>
using namespace std;
int tCount[10000001];
int solution(int k, vector<int> tangerine) {
int answer = 0;
for(auto& t : tangerine){ // 각 귤 당 개수 계산
tCount[t]++;
}
priority_queue<int> pq; // 여긴 수만 저장 - 어떤 귤인지는 상관 X
for(auto& n : tCount){ // pq를 통해 수가 많은 것부터 사용하도록
if(n != 0){
pq.push(n);
}
}
while(k > 0){ // 수가 많은 귤부터 꺼내보며 확인
k -= pq.top();
pq.pop();
answer++;
}
return answer;
}
<< 깃헙 >>
[Level1.] 예산 C++ (0) | 2024.02.15 |
---|---|
[Level2.] 광물 캐기 C++ (0) | 2024.02.05 |
[Level2.] 구명보트 C++ (0) | 2024.02.04 |
[Level1.] 개인정보 수집 유효기간 C++ (0) | 2024.02.03 |
[Level2.] 주식가격 C++ (0) | 2023.07.12 |
댓글 영역