본문 바로가기

Java/SWEA

[JAVA] SWEA 1208. [S/W 문제해결 기본] 1일차 - Flatten

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV139KOaABgCFAYh&categoryId=AV139KOaABgCFAYh&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=JAVA&select-1=3&pageSize=10&pageIndex=1

 

SW Expert Academy

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

swexpertacademy.com

 

 

정답 

 

import java.util.*;


class Solution
{
	
	//배열에서 최댓값인덱스 찾기
	public static int getMax(int num[])
	{
		int max = Integer.MIN_VALUE;
		int idx = 0;
		for(int i=0; i<num.length; i++)
		{
			if(max<num[i])
			{
				max = num[i];
				idx = i;
			}
		}
		return idx;
	}
	
	//배열에서 최솟값 찾기 
	public static int getMin(int num[])
	{
		int min = Integer.MAX_VALUE;
		int idx = 0;
		for(int i=0; i<num.length; i++)
		{
			if(num[i]<min)
			{
				min = num[i];
				idx = i;
			}
		}
		return idx;
	}
	
	public static void main(String args[]) throws Exception
	{

		Scanner sc = new Scanner(System.in);

		for(int tc = 1; tc <= 10; tc++)
		{
			int count = sc.nextInt(); //덤프할 수 있는 최소 횟수 
			int box[] = new int[100];
			
			//상자 높이 입력받기 
			for(int i=0; i<100; i++)
			{
				box[i] = sc.nextInt();
			}
			
			//가장 높은 곳에 있는 상자를 가장 낮은 곳으로 옮기기 
			for(int i=0; i<count; i++)
			{
				int maxidx = getMax(box);
				int minidx = getMin(box);
				
				box[maxidx] -=1; //최댓값 에서 1빼기
				box[minidx] +=1; //최소값 에서 1더하기 
			}
			
			int answer = box[getMax(box)] - box[getMin(box)];
			
			System.out.printf("#%d %d\n",tc,answer);
			

		}
	}
}