[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
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 해결 방식
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 |