알고리즘(JAVA 사용)/Greedy

[알고리즘풀이]백준 2217 : 로프 JAVA

코찔이_suj 2021. 10. 10. 21:22
728x90

목차

  • 개요
  •  본문
  •  1) 문제
  •  2) 과정
  •  3) 코드 전체

 

 

개요

이전에 알고리즘 스터디에서 JAVA를 이용해 백준 2217번 로프를 풀었습니다. 이를 정리해보고자 합니다.

 

2217번: 로프

N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하

www.acmicpc.net

 

본문

1) 문제

2) 과정

그리 오래걸리진 않았던 문제입니다. 30분?에서 1시간 정도 사용했던 것 같아요.

이번엔 2-1) main에 모든 설명을 적어뒀습니다. 이를 참고해주세요!

2-1) main

    public static void main(String[] args) throws IOException {
        //input
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n=Integer.parseInt(reader.readLine());
        Integer[]intArr = new Integer[n];
        for(int i=0;i<n;i++)intArr[i]=Integer.parseInt(reader.readLine());
        Arrays.sort(intArr, Collections.reverseOrder());

        // logic
        long answer = 0;
        // 내림차순 해놓은 배열에서 로프의 개수(인덱스+1) * 새로운 값 곱한게
        // 병렬연결한 로프가 감당할 수 있는 무게임.
        // 그래서 하나씩 인덱스 이동하면서 큰 값을 answer에 저장해나가면 됨.
        for(int i=0;i<n;i++) answer=Math.max(intArr[i]*(i+1),answer);

        // output
        System.out.println(answer);

    }

 

3) 전체코드

그렇게 완성된 코드는 다음과 같습니다.

package sujeong.greedy;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;

public class BOJ2217 {
    public static void main(String[] args) throws IOException {
        //input
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n=Integer.parseInt(reader.readLine());
        Integer[]intArr = new Integer[n];
        for(int i=0;i<n;i++)intArr[i]=Integer.parseInt(reader.readLine());
        Arrays.sort(intArr, Collections.reverseOrder());

        // logic
        long answer = 0;
        // 내림차순 해놓은 배열에서 로프의 개수(인덱스+1) * 새로운 값 곱한게
        // 병렬연결한 로프가 감당할 수 있는 무게임.
        // 그래서 하나씩 인덱스 이동하면서 큰 값을 answer에 저장해나가면 됨.
        for(int i=0;i<n;i++) answer=Math.max(intArr[i]*(i+1),answer);

        // output
        System.out.println(answer);

    }
}

 

깃헙으로 더 자세히 보고싶으시다면, 아래 링크를 참고해주세요 :)

https://github.com/Park1122/Algorithm-Study/blob/master/sujeong/greedy/BOJ2217.java

 

GitHub - Park1122/Algorithm-Study: 명지대학교 학생들이 모여서 만든 알고리즘 공부 및 코딩테스트 준비

명지대학교 학생들이 모여서 만든 알고리즘 공부 및 코딩테스트 준비를 위한 스터디입니다. Contribute to Park1122/Algorithm-Study development by creating an account on GitHub.

github.com