본문 바로가기

알고리즘 문제풀이/SWEA(SW Expert Academy)

[SWEA][JAVA]1208번 - Flatten

문제 바로가기(출처) : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV139KOaABgCFAYh&categoryId=AV139KOaABgCFAYh&categoryType=CODE&problemTitle=1208&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 

 

SW Expert Academy

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

swexpertacademy.com

 

문제

 

설명

이 문제의 핵심은, 배열을 정렬해서 flatten 작업을 효율적으로 하는 것 입니다. 

 

 

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class SWEA1208 {

	public static void main(String[] args) throws Exception {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int[] boxes = new int[100];
		
		for(int tc=1; tc<=10; tc++) {
			int num=Integer.parseInt(br.readLine()); //dump 횟수
			StringTokenizer st = new StringTokenizer(br.readLine());
			int diff=0;
			
			for(int i=0; i<100; i++) {
				boxes[i]=Integer.parseInt(st.nextToken());
			}
			//입력 완료
			
			int cnt=0;
			
			while(true) {
				Arrays.sort(boxes);
				diff = boxes[99]-boxes[0];
				if(diff<=1 || cnt==num) //평탄화가 이미 완료됐거나 횟수만큼 다 돌았다면
					break;
				
				boxes[99]--; boxes[0]++; //dump  수행
				cnt++;
			}
			System.out.println("#"+tc+ " " + diff);
		}
	}

}