🔺 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🔺 코드
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
|
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
Map<Integer, Integer> map = new HashMap<>(); // 귤 종류, 갯수
// 1) 귤 종류와 갯수 저장하기
for(int t : tangerine) {
map.put(t, map.getOrDefault(t, 0) + 1);
}
// 2) map, 갯수가 많은 순 (=내림차순) 정렬
List<Integer> vList = new ArrayList<>(map.values());
vList.sort((o1, o2) -> o2 - o1);
// 3) map 돌면서 가능한 경우의 최솟값 찾기
int sum = 0; // 고른 귤 개수
int min = 0; // 최솟값
for(int v : vList) {
if(sum + v >= k) {
min++;
break;
}
else {
sum += v;
min++;
}
}
return min;
}
}
|
cs |
🧩 해결 아이디어
• HashMap
1. HashMap을 사용해 <귤 종류, 갯수> 를 저장한다.
2. 귤 종류 중 갯수가 많은 순으로 내림차순으로 정렬한다.
3. map을 돌면서 가능한 경우의 최솟값을 찾는다.
- 해당 종류의 귤의 갯수가 한 상자에 담으려고 하는 귤의 갯수 k보다
ㄴ크거나 같다면, 최솟값에 1을 더하고 반복문을 탈출한다.
ㄴ크기가 작다면, 한 상자에 담을 수 있기 때문에 고른 귤 갯수에 현재 귤 종류의 갯수를 더하고, 귤 종류의 최솟값 갯수에 +1을 한다.
🔺 다른 풀이들
- 최솟값 찾는 방식이 조금 다르다. 담엔 이렇게 생각해보겠어....
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
HashMap<Integer,Integer> map =new HashMap<>();
for (int t : tangerine) {
map.put(t, map.getOrDefault(t, 0) + 1);
}
List<Integer> list = new ArrayList<>(map.keySet());
list.sort((o1, o2) -> map.get(o2)-map.get(o1));
for(Integer key : list){
k -= map.get(key);
answer++;
if(k <= 0){
break;
}
}
return answer;
}
}
💬 느낀 점
단순한 걸 참 어렵게 생각해서 못 하는 경향이 있다..
내가 부족한거겠지...
후 코테 올솔하고 싶구나...
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
✔ 풀이 참고
[프로그래머스] 귤 고르기(Java, 자바)
귤 고르기해당 문제는 HashMap을 활용해 문제를 해결했습니다.1\. 주어진 배열의 정수를 HashMap의 key값으로 하여 정수의 개수를 저장합니다.2\. 개수로 저장된 value를 ArrayList로 변환해 내림차순으로
velog.io
✔ HashMap Value 기준 정렬
"HashMap"의 "Value" 기준 정렬
import java.util.Map; import java.util.HashMap; import java.util.Collections; import java.util.List; import java.util.Comparator; import java.util.ArrayList; public class Main{ public static void main(String[] args){ Map map = new HashMap(); map.put(1, 0.8
daily-life-of-bsh.tistory.com
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv. 1] K번째수 (JAVA) (0) | 2023.10.15 |
---|---|
[프로그래머스/Lv. 2] 튜플 (JAVA) (1) | 2023.10.13 |
[프로그래머스/Lv. 2] 전력망을 둘로 나누기 (JAVA) (0) | 2023.10.12 |
[프로그래머스/Lv. 3] 없어진 기록 찾기 (MySQL) (0) | 2023.10.12 |
[프로그래머스/Lv. 3] 오랜 기간 보호한 동물(1) (MySQL) (0) | 2023.10.12 |