SWEA1208 Flatten
효율적으로 계산하는 방법은 쉽지 않겠지만, 문제에서 주어진 실행시간이 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();
}
}
Author And Source
이 문제에 관하여(SWEA1208 Flatten), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mraz0210/SWEA1208-Flatten저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)