https://school.programmers.co.kr/learn/courses/30/lessons/135808
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
사실 이 문제는 바로 전에 포스팅했던 문제와 굉장히 유사하다고 생각한다.
https://yoloaeee.tistory.com/331
[프로그래머스] 레벨3 귤 고르기
https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞
yoloaeee.tistory.com
내가 푼 방식 때문인지 문제이름에 둘 다 과일이 들어가서인지는 모르겠지만 어쨌든 나는 Map 형태로 입출을 처리한 후에 문제방식에 따라서 추가처리를 하였다. 아무래도 HashMap을 정렬하는 내부 라이브러리가 있으면 코드 길이가 확 짧아질 것 같은데 아직까지 자바에서는 찾지 못했다. 대신 사용방법을 더욱 확실하게 알아놔야겠다는 생각을 하게 되었다.
문제 및 입출력
코드
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
class Solution
{
public static int solution(int k, int m, int[] score)
{
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
int answer = 0;
for(int i=0; i<score.length; i++)
{
if(map.containsKey(score[i]))
{
map.put(score[i], map.get(score[i])+1);
}
else
{
map.put(score[i], 1);
}
}
List<Map.Entry<Integer, Integer>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>()
{
@Override
public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2)
{
return o2.getKey()-o1.getKey();
}
});
int min = Integer.MAX_VALUE;
int cnt = 0;
for(int i=0; i<list.size(); i++)
{
cnt += list.get(i).getValue();
min = Math.min(min, list.get(i).getKey());
if(cnt>=m)
{
answer += (cnt/m)*m*min;
}
cnt %= m;
if(cnt!=0)
{
min = Math.min(min, list.get(i).getKey());
}
}
System.out.println(answer);
return answer;
}
}
'[ 다먹살 ] > - Coding' 카테고리의 다른 글
[프로그래머스] 레벨0 최빈값 구하기 (3) | 2023.04.20 |
---|---|
[프로그래머스] 레벨 3 연속 부분 수열 합의 개수 (2) | 2023.04.19 |
[프로그래머스] 레벨3 귤 고르기 (2) | 2023.04.18 |
[프로그래머스] 레벨3 베스트앨범 (2) | 2023.04.17 |
[백준] 9251 LCS (2) | 2023.04.17 |
댓글