Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
more
Archives
Today
Total
관리 메뉴

Skipalong's tistory

240223 TIL - 귤고르기 본문

TIL

240223 TIL - 귤고르기

Skipalong 2024. 2. 24. 23:58

오늘은 프로그래머스 귤고르기 문제를 풀었다. 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