ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래머스 - Lv1. 예산
    PS 2022. 3. 1. 22:46

    문제 : 예산

    • 문제 내용은 여기.
    • 쉽게 말해, 지원할 수 있는 부서의 최대 수를 구해서 돌려주면 된다.

    풀이

    import java.util.ArrayList;
    import java.util.List;
    
    class Solution {
        public int solution(int[] d, int budget) {
            List<Integer> dlist = new ArrayList<Integer>();
            for (int item : d) dlist.add(item);
            dlist.sort(null);
            // 위의 세 줄은 다음과 같이 한 줄로 고칠 수 있다: 
            // Arrays.sort(d); //다음 for문에서 dlist 대신 d 사용.        
    
            int answer = 0;
            for (int ditem : dlist) {
                budget -= ditem;
    
                if (budget < 0) break;
    
                answer += 1;
            }
    
            return answer;
        }
    }
    • 코드 길이가 짧고 주석을 잘 남겨놔서 설명은 생략.

    후기

    1 ) 어제 포스팅 한 코테 글에서 array는 sort()indexOf()도 지원하지 않는다고 했었는데 반만 맞았다. 주석에 남겼다시피, Arrays 클래스를 통해서 sort()는 가능했다. 모르고 Arraylist에 담아 답을 제출한 후에 다른 사람들의 답안을 확인하고 나서 알았다.
    2 ) 좀 딴 얘기지만 Arrays.asList()를 통해서 배열을 List로 만들려면 array의 타입이 reference Type이어야 한다. int와 같은 primitive type은 불가하다. 왜 불가한지는 아직 모르겠다. 또한 List.sort()의 인자는 Comparator를 구현하는 Comparators 클래스의 enum 객체인데, 기본값(?)인 null을 넣으면 Comparator.naturalOrder()를 입력하는 것과 같다(Comparators.NaturalOrderComparator.INSTANCE).
    3 ) 문제는 쉬워도 배울게 있다는 점이 좀 쑥스러우면서도 좋다.

    댓글

Designed by Tistory.