SWEA1208 Flatten

·2022년 4월 18일
0

SWEA 알고리즘

목록 보기
6/29

효율적으로 계산하는 방법은 쉽지 않겠지만, 문제에서 주어진 실행시간이 20초이기 때문에 단순하게 MAX, MIN을 찾아 구현하면 된다.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

class Solution {
	static BufferedReader br;
	static BufferedWriter bw;
	static StringTokenizer st;
	static int[] Box;
	static int numofBox;

	static void dump() {
		int[] m_idx = search_MaxnMin();
		Box[m_idx[0]]--;
		Box[m_idx[1]]++;
	}

	static int[] search_MaxnMin() {
		int max = Box[0], min = Box[0];
		int max_idx = 0, min_idx = 0;
		for (int i = 1; i < numofBox; i++) {
			if (max < Box[i]) {
				max_idx = i;
				max = Box[i];
			}
			if (min > Box[i]) {
				min_idx = i;
				min = Box[i];
		}}
		int[] r = { max_idx, min_idx };
		return r;
	}

	public static void main(String args[]) throws Exception {
		br = new BufferedReader(new InputStreamReader(System.in));
		bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int T = 10;
		for (int tc = 1; tc <= T; tc++) {
			int N = Integer.parseInt(br.readLine());

			st = new StringTokenizer(br.readLine(), " ");
			numofBox = st.countTokens();
			Box = new int[numofBox];
			for (int i = 0; i < numofBox; i++) {
				Box[i] = Integer.parseInt(st.nextToken());
			}
			for (int i = 0; i < N; i++) {
				dump();
			}
			int[] m_idx = search_MaxnMin();
			int dif = Box[m_idx[0]] - Box[m_idx[1]];
			//System.out.println(dif);
			
			bw.write(String.format("#%d ", tc)); bw.write(String.format("%d\n", dif));
			 
		}
		bw.flush();
		bw.close();
	}
}
profile
SSAFY 7기

0개의 댓글