728x90
✔️ 문제 설명
✔️ 문제 풀이
요구 사항 : 가장 높은 상자를 가장 낮은 상자로 옮긴다.
1. 배열을 오름차순으로 정렬한다.
Arrays.sort(arr);
2. 가장 큰 수(arr[99])의 상자를 가장 작은 수(arr[0])으로 옮긴다.
arr[99] --;
arr[0] ++;
Arrays.sort(arr);
최종 코드
import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
class Solution
{
public static void main(String args[]) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
for(int i = 0; i<10; i++){
int cnt = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
int[] arr = new int[100];
Arrays.fill(arr,0);
for(int j = 0; j <100; j ++){
arr[j] = Integer.parseInt(st.nextToken());
}
for(int j = 0; j< cnt; j++){
Arrays.sort(arr);
if(arr[99] - arr[0] == 0) break;
else{
arr[99] --;
arr[0] ++;
Arrays.sort(arr);
}
}
System.out.printf("#%d %d\n", i+1,arr[99]-arr[0]);
}
}
}
‼️ 잘못된 시도,,
처음에 sorting하는 것을 생각하지 못하고, max, min을 하나하나 찾아야된다고 생각해버렸다..
import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
class Solution
{
public static void main(String args[]) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
for(int i = 0; i<10; i++){
int cnt = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
int[] arr = new int[100];
Arrays.fill(arr,0);
for(int j = 0; j <100; j ++){
arr[Integer.parseInt(st.nextToken()) - 1]++;
}
Point max = new Point( Integer.MIN_VALUE, 101);
Point min = new Point( Integer.MAX_VALUE, 101);
for(int j = 0; j< cnt; j++){
if( max.cnt - min.cnt == 0) break;
for(int k = 0; k<100; k++){
max = new Point(Math.max(max.cnt, arr[k]), k);
min = new Point(Math.min(min.cnt, arr[k]), k);
}
max = new Point(max.cnt -1, max.num);
min = new Point(min.cnt +1, min.num);
}
System.out.printf("#%d %d", i+1,max.cnt-min.cnt);
}
}
public static class Point{
private int cnt;
private int num;
public Point(int cnt, int num){
this.cnt = cnt;
this.num = num;
}
}
}
728x90
'Coding Test > SWEA 풀이' 카테고리의 다른 글
[SWEA] 1209. Sum : D3 (java) (0) | 2024.11.16 |
---|---|
[SWEA] 1206. [S/W 문제해결 기본] 1일차 - View : D3 (java) (0) | 2024.11.15 |
[SWEA] 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기 : D2 (java) (1) | 2024.11.14 |