기록하지 않았다면 잃어버릴 시간들
Home
  • 분류 전체보기 (184)
    • Lang (6)
      • c++ (2)
      • Java (2)
      • python (2)
    • 프레임워크 (18)
      • Spring (16)
      • JPA (2)
    • 알고리즘 (141)
      • 이론 (4)
      • 백준 (59)
      • Codility (13)
      • 프로그래머스 (65)
    • CS (4)
      • 운영체제 (0)
      • 자료구조 (0)
      • DB (4)
      • 네트워크 (0)
      • 보안 (0)
    • 기타 (7)
    • 프로젝트 (4)
      • 게시판 만들기로 배우는 Spring Data JP.. (4)
Home
  • 분류 전체보기 (184)
    • Lang (6)
      • c++ (2)
      • Java (2)
      • python (2)
    • 프레임워크 (18)
      • Spring (16)
      • JPA (2)
    • 알고리즘 (141)
      • 이론 (4)
      • 백준 (59)
      • Codility (13)
      • 프로그래머스 (65)
    • CS (4)
      • 운영체제 (0)
      • 자료구조 (0)
      • DB (4)
      • 네트워크 (0)
      • 보안 (0)
    • 기타 (7)
    • 프로젝트 (4)
      • 게시판 만들기로 배우는 Spring Data JP.. (4)
블로그 내 검색

기록하지 않았다면 잃어버릴 시간들

새로운 것을 배우는게 즐거운 개발자입니다.

  • 알고리즘/프로그래머스

    Programers 귤 고르기 / C++

    2022. 12. 3.

    by. 내이름은 킹햄찌

    https://school.programmers.co.kr/learn/courses/30/lessons/138476

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

     

    아이디어

    고른 귤의 종류가 최소가 되는 방법은 가장 개수가 많은 귤에서부터 고르는 기회를 소진시키면 됩니다.

    귤과 고르는 기회를 곱하여 0이 될때 한 종류의 과일을 다고르거나 더이상 귤고르는 기회가 없을때 2가지 조건을 모두 충족시키는 조건문이 되는데, 해당 조건을 코드로 풀어낸게 문제의 히트요소입니다. 

     

    #include <vector>
    #include <unordered_map>
    #include <algorithm>
    using namespace std;
    
    int solution(int k, vector<int> tangerine) {
    	int answer = 0;
    	int sum = 0;
    	unordered_map<int, int> m;
    	vector<pair<int, int>> v;
    	unordered_map<int, int>::iterator iter;
    	for (auto iter : tangerine) m[iter]++;
    	for (iter = m.begin(); iter != m.end(); iter++) v.push_back({ iter->first, iter->second });
    	
    	sort(v.begin(), v.end(), 
             [](pair<int, int> a, pair<int, int> b)->bool {
    				return a.second > b.second; });	
        
    	for (auto iter : v) {
    		if (k < 1) break;
    		answer++;
            //귤과 k를 곱해서 0이 될때는 한 종류의 과일을 다 고르거나 더 이상 고를 수 없을때
    		while (iter.second*k) {
    			k--;
    			iter.second--;
    		}
    	}
    	return answer;
    }

    '알고리즘 > 프로그래머스' 카테고리의 다른 글

    Programers 약수의 합 / C++  (0) 2022.12.03
    Programers 할인 행사 / C++  (0) 2022.12.03
    Programers 야근지수 / C++  (0) 2022.12.03
    Programers 단속카메라 / C++  (0) 2022.12.03
    Programers 같은 숫자는 싫어  (0) 2022.09.11

    댓글

    관련글

    • Programers 약수의 합 / C++ 2022.12.03
    • Programers 할인 행사 / C++ 2022.12.03
    • Programers 야근지수 / C++ 2022.12.03
    • Programers 단속카메라 / C++ 2022.12.03
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
내이름은 킹햄찌

티스토리툴바