어흥
[SWEA 4050] 재관이의 대량 할인 (JAVA) 본문
728x90
반응형
문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIseXoKEUcDFAWN
1. 주의할 점
- 구매하는 옷이 3벌 미만인 경우 예외 처리를 해준다
2. 구현
- 입력받은 가격을 내림차순으로 정렬한다
- 앞에서부터 3개씩 묶고, 그 중 가장 낮은 가격은 제외한다
- 마지막에 3개로 안 묶어질 경우, 남은 옷의 가격을 모두 더한다
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Solution_d4_4050_재관이의대량할인 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int test= Integer.parseInt(br.readLine().trim());
for(int t=1;t<=test;t++) {
int num = Integer.parseInt(br.readLine().trim());
int arr[] = new int[num];
int rev[] = new int[num];
String s = br.readLine();
StringTokenizer st = new StringTokenizer(s);
for(int i=0;i<num;i++) {
int val = Integer.parseInt(st.nextToken());
arr[i]=val;
}
Arrays.sort(arr);
long result=0;
if(num<3) {
for(int i=0;i<num;i++)
result+=arr[i];
}
else {
int mod = num/3;
int remain = num%3;
int cnt=0;
for(int i=num-1;i>=0;i--)
rev[cnt++]=arr[i];
for(int i=0;i<mod;i++)
result+=(rev[3*i]+rev[3*i+1]);
if(remain!=0)
for(int i=0;i<remain;i++)
result+=arr[i];
}
System.out.println("#"+t+" "+result);
}
}
}
728x90
반응형
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA 4112] 이상한 피라미드 탐험 (C++) (0) | 2020.05.01 |
---|---|
[SWEA 6109] 추억의 2048게임 (JAVA) (0) | 2020.04.29 |
[SWEA 5658] 보물상자 비밀번호 (Java) (0) | 2020.04.29 |
[SWEA 1767] 프로세서 연결하기 (C++) (0) | 2020.04.26 |
[SWEA 5215] 햄버거 다이어트 (JAVA) (0) | 2020.04.23 |
Comments