728x90
목차
- 개요
- 본문
- 1) 문제
- 2) 과정
- 3) 코드 전체
개요
이전에 알고리즘 스터디에서 JAVA를 이용해 백준 2217번 로프를 풀었습니다. 이를 정리해보고자 합니다.
본문
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
'알고리즘(JAVA 사용) > Greedy' 카테고리의 다른 글
[알고리즘풀이]백준 1946 : 신입 사원 JAVA (0) | 2021.10.10 |
---|---|
[알고리즘풀이]백준 1931: 회의실 배정 JAVA (0) | 2021.10.05 |
[알고리즘풀이]백준 1715: 카드 정렬하기 JAVA (0) | 2021.10.05 |
[알고리즘풀이]백준 1541: 잃어버린 괄호 JAVA (0) | 2021.10.05 |
[알고리즘풀이]백준 14916 : 거스름돈 JAVA (0) | 2021.10.05 |