알고리즘

[백준, 자바, 1049번] 기타줄

hminor 2023. 12. 18. 11:39

풀이

  • 우선 6개 통 구매 가격, 낱개 구매 가격에 대한 배열 생성 후 값 변경한 다음 정렬
  • 이후 낱개 6개와 6개 통 구매의 금액 비교로 조건 분기를 하며
  • 통 구매가 더 적은 경우엔 m을 6으로 나눈 몫 만큼만 통으로 구매한 다음
  • 나머지 개수를 낱개의 값으로 곱한것이 통으로 구매한 가격보다 큰지에 대한
  • 조건분기 처리를 한 번 더 하여 문제 해결 

 

import java.io.*;
import java.util.*;

public class 기타줄 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st1 = new StringTokenizer(br.readLine());
        int m = Integer.parseInt(st1.nextToken());
        int n = Integer.parseInt(st1.nextToken());
        ArrayList<Integer> f_li = new ArrayList<>();
        ArrayList<Integer> li = new ArrayList<>();
        int result = 0;

        for (int i = 0; i < n; i++) {
            StringTokenizer st2 = new StringTokenizer(br.readLine());
            int x = Integer.parseInt(st2.nextToken());
            int y = Integer.parseInt(st2.nextToken());
            f_li.add(x);
            li.add(y);
        }

        Collections.sort(f_li);
        Collections.sort(li);

        if (li.get(0)*6 > f_li.get(0)) {
            result = (m/6)*f_li.get(0);
            if (m%6* li.get(0) > f_li.get(0)) result += f_li.get(0);
            else result += m%6*li.get(0);
        } else result = m*li.get(0);
        System.out.println(result);
    }
}