Coding Test/JAVA 코딩테스트 풀이정리(프로그래머스)

프로그래머스 스쿨 Lv.1 - 과일 장수(해시)
깝몬 2024. 1. 2. 23:23

문제

https://school.programmers.co.kr/learn/courses/30/lessons/135808

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

정답

import java.util.*;

class Solution {
    public int solution(int k, int m, int[] score) {
        HashMap<Integer,Integer> hash = new HashMap<>();
        for(int price : score){
            if(hash.get(price)==null){
                hash.put(price,1);
            }else{
                hash.put(price,hash.get(price)+1);
            }
        }
        int answer = 0;         
        while(k>0){
            int counter = m;
            while(counter>0 && k>0){
                if(hash.get(k)!=null && hash.get(k)>0){
                    hash.put(k, hash.get(k)-1);
                    counter--;
                }else if(hash.get(k)==null || hash.get(k)==0){
                    k--;
                }
                if(counter==0){
                    answer+=k*m;
                }
            }
        }
        return answer;
    }
}

 

해시맵에 해당하는 것의 개수를 count하여가며 문제를 풀어내는 방식이다.

 

배열만 생각하며 풀었을때와는 활용성이 많이 달라 발전한 것 같지만, 코드가 조금 더 간결 할 수 있을것 같아 다른사람의 풀이도 찾아보고 배워야겠다.