어흥

[SWEA 4050] 재관이의 대량 할인 (JAVA) 본문

알고리즘/SWEA

[SWEA 4050] 재관이의 대량 할인 (JAVA)

라이언납시오 2020. 4. 29. 16:25
728x90
반응형

문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIseXoKEUcDFAWN

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

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
반응형
Comments