일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- HashSet
- replace()
- 프로그래머스 java
- append
- 백준 1197번 최소 스패닝 트리 - java
- ac 5430번
- 백준 2473번 세 용액 - java
- hash
- kotlin
- 백준 1647번 도시 분할 계획 - java
- StringTokenizer
- HashMap
- Stack
- mysql hy000 에러
- 백준 3190번
- 백준 14938번 서강그라운드
- 백준 1043번 거짓말 - java 분리 집합
- 18111번 마인크래프트 - java 구현
- 백준 1541
- 백준 2467번 용액 자바 - 이분탐색
- dp
- map
- Java
- StringBuilder
- toUpperCase
- 프로그래머스
- 백준 1806번 부분합 java
- 코틀린기초
- 프로그래머스 자바
- 최소 힙 1927
Archives
- Today
- Total
말하는 컴공감자의 텃밭
프로그래머스 귤 고르기 <2점> - 자바(java) HashMap 본문
728x90
귤귤귤~ 귤이 사이즈별로 주어진다.
판매할때 상품성을 위해서 사이즈의 종류가 적은 값을 출력하면 되는문제!
결국 사이즈별로 개수를 정리하고 개수를 더해서 k랑 같을때까지 반복하면 되는 문제겠네오.
다만 범위가 워낙에 커서 O(n) 관리를 잘 해줘야 합니다.
먼저 HashMap으로 중복 없이 귤의 개수를 파악하고, 개수가 많은거부터 더해야 하니까 내림차순으로 정리.
이후 k가 맞으면 answer ++해서 출력하면 되겠숩니당.
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 32 33 34 35 | import java.util.*; class Solution { public static int solution(int k, int[] tangerine) { Map<Integer, Integer> map = new HashMap<>(); // 사이즈 별 개수를 알기위해, 중복방지로 HashMap for (int t : tangerine) { map.put(t, map.getOrDefault(t, 0) + 1); // t가 없으면 0 삽입. } int sum = 0; int ans = 0; List<Integer> frequencyList = new ArrayList<>(); // for (int frequency : map.values()) { frequencyList.add(frequency); // map값 내림차용으로 리스트 복사 } Collections.sort(frequencyList, Collections.reverseOrder()); // 내림차순 정렬 for (int frequency : frequencyList) { ans++; sum += frequency; if (sum >= k) { // k값이 될때까지 연산. break; } } return ans; } } | cs |
728x90
'알고리즘 > Programmers - Java' 카테고리의 다른 글
프로그래머스 - 뒤에 있는 큰 수 찾기 <9점> - 자바 java Stack (0) | 2023.08.04 |
---|---|
프로그래머스 카드 뭉치 <1점> - 자바(java) (0) | 2023.07.10 |
프로그래머스 [1차] 비밀지도 <1점> - 자바(java) (0) | 2023.07.05 |
프로그래머스 콜라문제 <3점> - 자바(java) (1) | 2023.07.04 |
프로그래머스 숫자의 표현 <3점> - 자바(java) (0) | 2023.07.03 |
Comments