[D3] [S/W 문제해결 기본] 1일차 - Flatten - 1208
성능 요약
메모리: 34,060 KB, 시간: 154 ms, 코드길이: 979 Bytes
제출 일자
2023-10-23 13:49
출처: SW Expert Academy, https://swexpertacademy.com/main/code/problem/problemList.do
문제 해결 방식
1. max인덱스와 min인덱스 연산을 구하고 차를 구하는dump 함수를 작성
2. count만큼 사용
3. 마지막에 함수 호출 뒤 + 2하여 출력
import java.util.*;
import java.io.*;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int[] boxes;
int SIZE = 100;
int T = 10;
for(int tc = 1; tc <= T; tc++)
{
int dumpCount = sc.nextInt();
boxes = new int[100];
for(int i = 0; i < SIZE;i++){
boxes[i] = sc.nextInt();
}
while(dumpCount-->0){
dump(boxes);
}
System.out.println("#" + tc + " "+(dump(boxes)+2));
}
}
private static int dump(int [] boxes){
int maxIdx = 0;
int minIdx = 0;
for(int i = 0; i < boxes.length; i++){
if(boxes[i] > boxes[maxIdx]){
maxIdx = i;
}
if(boxes[i] < boxes[minIdx]){
minIdx = i;
}
}
boxes[maxIdx]--;
boxes[minIdx]++;
return boxes[maxIdx] - boxes[minIdx];
}
}
더 쉬운 방법
-> 각 카운트마다 배열을 정렬 시켜 0번째 배열은 증가시키고 마지막 배열은 감소시킨다.
import java.util.*;
import java.io.*;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int[] boxes;
int SIZE = 100;
int T = 10;
for(int tc = 1; tc <= T; tc++)
{
int dumpCount = sc.nextInt();
boxes = new int[100];
for(int i = 0; i < SIZE;i++){
boxes[i] = sc.nextInt();
}
while( dumpCount-- > 0){
Arrays.sort(boxes);
boxes[0]++;
boxes[99]--;
}
Arrays.sort(boxes);
System.out.println("#" + tc + " " + (boxes[99] - boxes[0]));
}
}
}
'알고리즘 - SWEA > D3' 카테고리의 다른 글
[SW expert Academy] SWEA 10505번 소득 불균형 자바(Java) (0) | 2023.10.24 |
---|---|
[SW expert Academy] SWEA 12368번 24시간 자바(Java) (0) | 2023.10.24 |
[SW expert Academy] SWEA 1206번 View 자바(Java) (1) | 2023.10.23 |
[SW expert Academy] SWEA 3431번 준환이의 운동관리 자바(Java) (1) | 2023.10.22 |
[SW expert Academy] SWEA 13218번 조별과제 자바(Java) (0) | 2023.10.22 |