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
- 2346 풍선 터뜨리기
- 백준 28278 자바
- 10807 자바
- 28278 스택 2
- IAM 사용자
- 2798 자바
- 2748 자바
- 그리디
- 백준
- 백준 2346 자바
- 자바 1003
- 1764 자바
- 자바 2164
- 티움투어
- 자바 10866
- BFS
- IAM Identity Center
- 2164 자바
- 10813 자바
- dfs
- 백준 10866 자바
- 데보션영 3기
- 1010 자바
- 자바
- 백준 1764 자바
- 자바 28278
- 파이썬
- 10810 자바
- 코딩테스트
- 자바 2346
Archives
- Today
- Total
자두의 데브로그
[자바] 프로그래머스 폰켓몬 본문
https://school.programmers.co.kr/learn/courses/30/lessons/1845
해시맵을 알고 있다면 쉽게 풀 수 있는 문제였다. 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 |