[Softeer] Java - level2 문제풀이(금고털이)

2023. 1. 27. 22:54·개발자 세릴리/코딩테스트
728x90
반응형

 

 

softeer 금고털이(Java)

 
[문제]

루팡은 배낭을 하나 메고 은행금고에 들어왔다. 금고 안에는 값비싼 금, 은, 백금 등의 귀금속 덩어리가 잔뜩 들어있다. 배낭은 W ㎏까지 담을 수 있다.

각 금속의 무게와 무게당 가격이 주어졌을 때 배낭을 채울 수 있는 가장 값비싼 가격은 얼마인가?

루팡은 전동톱을 가지고 있으며 귀금속은 톱으로 자르면 잘려진 부분의 무게만큼 가치를 가진다.

 

[제약조건]

1 ≤ N ≤ 10^6인 정수

1 ≤ W ≤ 10^4인 정수

1 ≤ Mi, Pi ≤ 10^4인 정수

 

[입력형식]

첫 번째 줄에 배낭의 무게 W와 귀금속의 종류 N이 주어진다. i + 1 (1 ≤ i ≤ N)번째 줄에는 i번째 금속의 무게 Mi와 무게당 가격 Pi가 주어진다.

 

[출력형식]

첫 번째 줄에 배낭에 담을 수 있는 가장 비싼 가격을 출력하라.

 

[풀이]

귀금속의 가격을 배열의 인덱스로, 귀금속의 무게를 값으로 가지는 sortPrice 배열을 선언하는 것이 중요한 포인트이다.

제약조건의 price 범위가 10^4 이하인 정수인 점을 이용해 배열의 크기를 10001로 선언한다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class level2_1 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] bag = br.readLine().split(" ");
        int W = Integer.parseInt(bag[0]);
        int N = Integer.parseInt(bag[1]);
        int[] weight = new int[N];
        int[] price = new int[N];
        int[] sortPrice = new int[10001];
        for(int i=0; i<N; i++) {
            String[] line = br.readLine().split(" ");
            weight[i] = Integer.parseInt(line[0]);
            price[i] = Integer.parseInt(line[1]);
            sortPrice[price[i]] = sortPrice[price[i]] + weight[i];
        }
        int totalPrice = 0;
        for(int i=10000; i>=0; i--) {
            if(sortPrice[i]>=W) {
                totalPrice += W * i;
                break;
            } else {
                totalPrice += sortPrice[i] * i;
                W -= sortPrice[i];
            }
        }
        System.out.println(totalPrice);
        br.close();
    }
}

 

실제로 쉽게 풀이한 것 같지만 수많은 실패를 거듭해서 나온 결과입니다.ㅎㅎ

728x90
반응형

'개발자 세릴리 > 코딩테스트' 카테고리의 다른 글

[Softeer] Java - level2 문제풀이(지도 자동 구축)  (0) 2023.02.03
[Softeer] Java - level2 문제풀이(장애물 인식 프로그램)  (0) 2023.01.29
[Softeer] Java - level2 문제풀이(8단변속기)  (0) 2023.01.28
[Softeer] Java - level1 문제풀이(주행거리 비교하기, 근무시간, A+B)  (0) 2023.01.24
[백준] 백준 코딩테스트 / solved.ac 이용 방법  (0) 2023.01.23
'개발자 세릴리/코딩테스트' 카테고리의 다른 글
  • [Softeer] Java - level2 문제풀이(장애물 인식 프로그램)
  • [Softeer] Java - level2 문제풀이(8단변속기)
  • [Softeer] Java - level1 문제풀이(주행거리 비교하기, 근무시간, A+B)
  • [백준] 백준 코딩테스트 / solved.ac 이용 방법
세릴리
세릴리
  • 세릴리
    세리의 데이터베이스 세상
    세릴리
  • 전체
    오늘
    어제
    • 분류 전체보기 (87)
      • 개발자 세릴리 (65)
        • 비전공자 한 입 지식 (12)
        • 코딩테스트 (24)
        • 스펙업 (15)
        • JAVA (5)
        • 일상 (9)
      • 파이어족 세릴리 (21)
        • 블로그 운영 (3)
        • 각종 양식 공유 (1)
        • 돈되는 정보 공유 (17)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    비전공자 개발자
    adsp 공부법
    현대모비스 코딩테스트
    현대 코딩테스트
    이슈
    명품자바프로그래밍 정답
    현대오토에버 코딩테스트
    adsp 수험표
    비전공 개발자
    현대자동차 코딩테스트
    비전공자 개발
    Softeer 문제 풀이
    개발자 이직
    개발자되는법
    adsp 독학
    현대 코테
    JAVA 책 추천
    현대오토에버 코테
    명품자바프로그래밍 해설
    adsp 자료
    백준
    JAVA 개발공부
    Java 문제
    java 공부
    softeer java 풀이
    개발자 공부
    adsp 벼락치기
    명품자바프로그래밍
    프로그래밍 공부
    오늘 이슈
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
세릴리
[Softeer] Java - level2 문제풀이(금고털이)
상단으로

티스토리툴바