본문 바로가기
알고리즘 풀이

221112 알고리즘 풀이

by 미노킴 2022. 11. 13.

문제

프로그래머스 코딩 테스트 난이도 1의 과일 장수, 푸드파이트 대회

 

코드

과일 장수

 

import java.util.*;
import java.util.stream.Collectors;

class Solution {
    public int solution(int k, int m, int[] score) {
        int answer = 0;
        
        //score 배열을 리스트로 변환
        List<Integer> list = Arrays.stream(score)
                .boxed()
                .collect(Collectors.toList());
        
        
        //박스 내림차순 정렬
        Collections.sort(list,Collections.reverseOrder());
        
        //남는 사과 버리기
        int rem = list.size()%m;
        int size = list.size();
        for(int i = size-1; i>= size-rem; i--){
            list.remove(i);
        }
        
        
        //최대이익 구하기, m번째에 있는 점수만 계산해서 결과값에 넣음. 결국 그게 그 상자의 최솟값.
        //내림차순으로 정렬해서 순서대로 넣으면 그 자체가 최대이익.
        for(int i=m-1; i<=list.size()-1; i+=m){
            answer += list.get(i).intValue() * m;
        }
        
        return answer;
    }
}

 

푸드 파이트 대회

 

class Solution {
    public String solution(int[] food) {
        String answer = "";
        
        //배열에 든 음식 절반 잘라서 다시 보관
        for(int i=1;i<food.length; i++){
            food[i] = (food[i]%2==0) ? food[i]/2 : (food[i]-1)/2;
        }
        
        //왼쪽 음식 추가
        for(int i=1;i<food.length; i++){
            answer += String.valueOf(i).repeat(food[i]);
        }
        
        //문자열 뒤집고 0 추가해서 물과 오른쪽 음식 추가
        StringBuffer sb = new StringBuffer(answer);
        answer += "0";
        answer += sb.reverse().toString();
        
        return answer;
    }
}

 

'알고리즘 풀이' 카테고리의 다른 글

221121 알고리즘 풀이 6문제  (2) 2022.11.21
221119 알고리즘 풀이 8문제  (2) 2022.11.19
221118 알고리즘 풀이 1  (0) 2022.11.18
221114 알고리즘 풀이  (0) 2022.11.15
221113 알고리즘 풀이  (0) 2022.11.14