1) SW Expert Academy 정책상 문제 자체를 퍼가는 것은 금지되며 링크와 출처로 명시해 주시기 바랍니다.
2) 문제에 대한 본인의 풀이에 대해서는 개인 학습 등 상업적 용도가 아닌 경우에만 문제 출처와 함께 게시가 가능합니다.
※ 저작권 이슈가 있을 시 법적 제재를 받을 수 있으니 참고하여주시기 바랍니다.
문제 설명
나의 풀이
import java.util.Scanner;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T = 10; // 테스트케이스 개수
for(int test_case = 1; test_case <= T; test_case++)
{
int b = sc.nextInt(); // 덤프 횟수
int[] arr = new int[100];
for(int i = 0; i < arr.length; i++){ // 배열에 입력
arr[i] = sc.nextInt();
}
// 덤프 작업 수행
for(int a = 0; a < b; a++){
// 최대값, 최소값 및 인덱스 찾기
int max = arr[0], min = arr[0];
int maxIndex = 0, minIndex = 0;
for(int i = 1; i < arr.length; i++){
if(arr[i] > max){
max = arr[i];
maxIndex = i;
}
if(arr[i] < min){
min = arr[i];
minIndex = i;
}
}
// 최대값을 1 감소, 최소값을 1 증가
arr[maxIndex]--;
arr[minIndex]++;
}
// 최종적으로 최대값과 최소값 찾기
int max = arr[0], min = arr[0];
for(int i = 1; i < arr.length; i++){
if(arr[i] > max) max = arr[i];
if(arr[i] < min) min = arr[i];
}
int answer = max - min;
System.out.println("#" + test_case + " " + answer);
}
sc.close();
}
}
제일 높은곳과 제일 낮은 곳을 찾은 후 제일 높은곳은 -1, 제일 낮은 곳은 +1를 주어지는 덤프 횟수 만큼 반복
- 배열에서 최대,최소값을 구할 때 2중for문이 아닌 1중for문으로 찾을 수 있음.
- 덤프 작업 1회후 어디가 최대,최소인지 모르기 때문에 최대, 최소 변수들을 다시 초기화해줘야함 하지만 배열의 값은 유지해야함
'👨💻 Coding Test' 카테고리의 다른 글
[SW Expert Academy/Java/D3] 1213.String (0) | 2024.11.08 |
---|---|
[SW Expert Academy/Java/D3] 1209.Sum (0) | 2024.11.08 |
[SW Expert Academy/Java/D3] 1206.View (0) | 2024.11.04 |
[SW Expert Academy/Java/D2] 1284.수도 요금 경쟁 (1) | 2024.10.31 |
[SW Expert Academy/Java/D1] 1936.1대1 가위바위보 (0) | 2024.10.31 |