상세 컨텐츠

본문 제목

[Level2.] 귤 고르기 C++

C++/Programmers

by J2on 2024. 2. 4. 16:07

본문

<< 문제 >> 

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;
}

 

 

<< 깃헙 >> 

 

https://github.com/J2on/StudyAlgorithm_Part2/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/138476.%E2%80%85%EA%B7%A4%E2%80%85%EA%B3%A0%EB%A5%B4%EA%B8%B0

 

'C++ > Programmers' 카테고리의 다른 글

[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

관련글 더보기

댓글 영역