Skipalong's tistory
240223 TIL - 귤고르기 본문
오늘은 프로그래머스 귤고르기 문제를 풀었다. https://school.programmers.co.kr/learn/courses/30/lessons/138476
어제 푼 문제와 비슷하게 Map을 사용하는 문제였다.
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
Map<Integer,Integer> m = new HashMap<>();
for(int i : tangerine) {
m.put(i, m.getOrDefault(i, 0) + 1);
}
List<Integer> li = new ArrayList<>(m.values());
Collections.sort(li, Collections.reverseOrder());
int temp = 0;
for(int i=0; i<li.size(); i++) {
temp += li.get(i);
if(temp >= k) {
answer = i+1;
break;
}
}
return answer;
}
}
이런식으로 풀이과정은 Map을 만들어서 주어진 tangerine 배열을 반복문을 돌면서 Map의 key에는 귤 크기를, value에는 key에 해당하는 값이 있다면 +1 을 해주어서 귤 크기별 개수를 담은 Map을 완성한 뒤 ArrayList에 value들을 담아서 역순으로 정렬한 뒤 다시 배열을 돌면서 temp라는 int에 배열의 원소들을 더해주고 고르려는 귤의 개수인 k 이상이 되면 해당 index값의 +1 을 answer에 담아 주는 방식으로 해결을 하였다.
이 과정에서 map의 getOrDefault라는 메서드를 사용해 보았는데 map과 관련된해서 앞으로 유용하게 사용할 것 같다. 또 Collections.sort(Collection, Collections.reverseOrder)라는 메서드도 사용했는데 그전에는 오름차순으로만 정렬을 했지만 이 메서드를 사용하면 내림차순으로 정렬할 수 있어 이 메서드도 유용하게 사용할 것 같다.
이번에 스터디를 하면서 알고리즘 문제를 다시 조금씩 풀고 있는데 앞으로는 스터디에서 기술면접준비를 위한 cs스터디와 알고리즘 스터디를 병행할 예정이어서 TIL에 적을 내용이 좀 더 많아질 것 같다.
'TIL' 카테고리의 다른 글
240227 TIL - 객체지향 프로그래밍(OOP) (1) | 2024.02.28 |
---|---|
240226 TIL - 팩토리 패턴 (1) | 2024.02.27 |
240222 TIL - Programmers 추억점수 (0) | 2024.02.23 |
240216 TIL - redis (0) | 2024.02.17 |
240215 TIL - RDBMS의 정규화 (0) | 2024.02.16 |