일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 운영체제
- 디자인패턴
- directx
- OS
- 그리디알고리즘
- 다이나믹프로그래밍
- 프로그래머스
- 동적계획법
- 렌더링 파이프라인
- 쓰레드
- I/O장치
- 컨디션 변수
- 파일시스템 구현
- 멀티프로세서
- 영속성
- DirectX 12
- 병행성 관련 오류
- 타입 객체
- Direct12
- 다이나믹 프로그래밍
- 멀티쓰레드
- 알고리즘
- 백준
- codility
- 락
- 스케줄링
- 병행성
- DirectX12
- 그리디 알고리즘
- 자료구조
Archives
- Today
- Total
기록공간
폰켓몬 (프로그래머스) 본문
반응형
문제가 길어보여 어려워 보이지만, 생각보다 간단한 문제였다.
N마리의 폰켓몬 중 절반만큼 선택하는데, 폰켓몬이 가장 많은 종류부터 한 마리씩 선택하여 몇 종류의 폰켓몬을 선택 할 수 있는지 출력하는 문제이다.
여기서 핵심은 폰켓몬의 종류이다. 답 부터가 몇가지 종류를 선택 할 수 있는지를 물어보기 때문이다.
종류가 N / 2개 보다 많은 경우 종류별로 한마리씩 골라도 N / 2개를 넘어가므로, 최대로 고를 수 있는 종류 N / 2를 답으로 출력하면 된다.
만약 종류가 N / 2개 보다 적은 경우 종류별로 한마리씩 골라도 남은 갯수 만큼은 똑같은 종류에서 골라야 하므로, 폰켓몬 종류 수만큼 출력하면 된다.
코드는 다음과 같다.
#include <vector>
#include <unordered_map>
using namespace std;
int solution(vector<int> nums)
{
int answer = 0;
unordered_map<int, int> um; // 몇 종류가 있는지 알아보기 위함
for (const auto iter : nums) um[iter]++;
int count = nums.size() / 2; // 고를 수 있는 수
return um.size() >= count ? count : um.size();
}
반응형
'Algorithm > 문제' 카테고리의 다른 글
MissingInteger (Codility) (0) | 2020.07.13 |
---|---|
BinaryGap (Codility) (0) | 2020.07.13 |
등굣길 (프로그래머스) (0) | 2020.07.01 |
타겟넘버 (프로그래머스) (0) | 2020.07.01 |
강의실 배정 (백준) (0) | 2020.06.22 |
Comments