728x90
목차
- 개요
- 본문
- 1) 문제
- 2) 과정
- 3) 코드 전체
개요
이전에 알고리즘 스터디에서 JAVA를 이용해 백준 11399번 ATM을 풀었습니다. 이를 정리해보고자 합니다.
본문
1) 문제
2) 과정
꽤 쉬웠던 문제여서 5분컷으로 끝냈던 문제입니다. 내용도 간단하기 때문에 main에 input, logic, output을 모두 담았습니다.
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());
String[] strArrN = reader.readLine().split(" ");
int[] intArr = new int[n];
for(int i =0;i<n;i++) intArr[i]=Integer.parseInt(strArrN[i]);
// Initialize
Arrays.sort(intArr);
// Logic
int sum=0;
for(int i=0;i<n;i++) sum += intArr[i]*(n-i);
// Output
System.out.println(sum);
}
main은 Input, Initialize, Logic, Output으로 구성됩니다.
Input에서는 첫 줄에 입력된 사람의 수 n과 그 다음 줄에 입력된 각 사람의 인출 시간을 담은 intArr을 읽어줍니다. 그 후 initialize 과정으로 intArr를 오름차순으로 정렬합니다. 배열을 오름차순으로 정렬하는 것은 시간이 적게 걸리는 사람을 앞에 둘수록 인출하는데 걸리는 시간이 적다는 점을 이용하여 Logic에서 계산을 효율적으로 하기 위함입니다.
Logic부분에서는 for문으로 모든 사람들의 시간을 돌며, sum에 걸리는 시간과 n-i를 곱해 더해주는데요.
이는 삐뚤빼뚤하지만 제가 적은 그림을 보시면 조금 더 쉽게 알 수 있으실겁니다.
3) 전체코드
그렇게 완성된 코드는 다음과 같습니다.
package sujeong.greedy;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
// 5분컷
public class BOJ11399 {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(reader.readLine());
String[] strArrN = reader.readLine().split(" ");
int[] intArr = new int[n];
for(int i =0;i<n;i++) intArr[i]=Integer.parseInt(strArrN[i]);
Arrays.sort(intArr);
int sum=0;
for(int i=0;i<n;i++) sum += intArr[i]*(n-i);
System.out.println(sum);
}
}
깃헙으로 더 자세히 보고싶으시다면, 아래 링크를 참고해주세요 :)
https://github.com/Park1122/Algorithm-Study/blob/master/sujeong/greedy/BOJ11399.java
'알고리즘(JAVA 사용) > Greedy' 카테고리의 다른 글
[알고리즘풀이]백준 1931: 회의실 배정 JAVA (0) | 2021.10.05 |
---|---|
[알고리즘풀이]백준 1715: 카드 정렬하기 JAVA (0) | 2021.10.05 |
[알고리즘풀이]백준 1541: 잃어버린 괄호 JAVA (0) | 2021.10.05 |
[알고리즘풀이]백준 14916 : 거스름돈 JAVA (0) | 2021.10.05 |
[알고리즘풀이]백준 11047: 동전 0 JAVA (0) | 2021.10.05 |