Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- IAM Identity Center
- 1764 자바
- 백준
- 자바 1003
- dfs
- BFS
- 자바 2346
- 10807 자바
- 티움투어
- 백준 10866 자바
- 2164 자바
- 백준 28278 자바
- IAM 사용자
- 2798 자바
- 10810 자바
- 10813 자바
- 자바 2164
- 28278 스택 2
- 백준 2346 자바
- 그리디
- 백준 1764 자바
- 자바 28278
- 파이썬
- 2346 풍선 터뜨리기
- 코딩테스트
- 데보션영 3기
- 1010 자바
- 자바 10866
- 2748 자바
- 자바
Archives
- Today
- Total
자두의 데브로그
[자바] 프로그래머스 폰켓몬 본문
https://school.programmers.co.kr/learn/courses/30/lessons/1845
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해시맵을 알고 있다면 쉽게 풀 수 있는 문제였다. HashMap을 통해 종류에 따른 폰켓몬의 마리 수를 세서 저장하고, iterator를 활용해서 map을 하나씩 확인하면서 answer 값을 증가시킨다. 만약 answer의 값이 N/2랑 동일해지면 break를 통해 반복문 밖으로 나가면 되고, 아니라면 map 끝까지 돌면 된다. 문제가 단순했던 이유는 nums로 입력된 폰켓몬의 종류가 최대 N개이기 때문에 최대한 많은 종류를 선택하기 위해서는 그냥 map에 저장된 값의 개수만 찾아준 뒤, 만약 N/2개 이상이면 N/2개까지만 선택 가능하도록 하면 된다.
import java.util.*;
class Solution {
public int solution(int[] nums) {
HashMap<Integer, Integer> map = new HashMap<>();
for(int i : nums){
map.put(i, map.getOrDefault(i, 0) + 1);
}
int answer = 0;
Iterator<Map.Entry<Integer, Integer>> iter = map.entrySet().iterator();
while(iter.hasNext()){
Map.Entry<Integer, Integer> entry = iter.next();
answer++;
if(answer == nums.length/2) break;
}
return answer;
}
}
'코딩테스트 > Java' 카테고리의 다른 글
[자바] 백준 11286번 절댓값 힙 (2) | 2024.10.09 |
---|---|
[자바] 백준 11279번 최대 힙 (0) | 2024.10.09 |
[자바] 프로그래머스 완주하지 못한 선수 (3) | 2024.10.09 |
[자바] 프로그래머스 N개의 최소공배수 (1) | 2024.10.08 |
[자바] 프로그래머스 이상한 문자 만들기 (0) | 2024.10.07 |