728x90
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV139KOaABgCFAYh
[입력]
(테스트케이스 중 1개의 예시)
834
42 68 35 1 70 25 79 59 63 65 6 46 82 28 62 92 96 43 28 37 92 5 3 54 93 83 22 17 19 96 48 27 72 39 70 13 68 100 36 95 4 12 23 34 74 65 42 12 54 69 48 45 63 58 38 60 24 42 30 79 17 36 91 43 89 7 41 43 65 49 47 6 91 30 71 51 7 2 94 49 30 24 85 55 57 41 67 77 32 9 45 40 27 24 38 39 19 83 30 42
[출력]
#1 13
[풀이]
dump : 제일 높은곳에 있는 상자를 제일 낮은곳에 옮기는 작업 => 최고점-1, 최저점+1
처음엔 문제 그대로 최고점을 찾고 최저점을 찾은 뒤 값을 1씩 줄이고 늘렸다.
하지만 Arrays.sort를 사용하면 오름차순으로 정렬되기 때문에 더욱 간편하게 코드를 짤 수 있다.
문제 그대로 구현하는것이 아니라,
문제를 충분히 분석하고 어떻게 풀어나가야 할지 많이 고민을 해보고 코드를 구현해야겠다는 생각이 든 문제!
import java.util.Arrays;
import java.util.Scanner;
public class swea1208_flatten {
public static void main(String[] args) {
int tc = 10;
Scanner sc = new Scanner(System.in);
for (int t = 0; t < tc; t++) {
int count = sc.nextInt();
int[] arr = new int[100]; //가로의 길이는 100으로 항상 정해져있다.
for (int i = 0; i < 100; i++)
arr[i] = sc.nextInt(); //input값 받아오기
Arrays.sort(arr); //배열정렬
for (int i = 0; i < count; i++) { //제한횟수만큼 dump실행
arr[0]++; //최저점 +1
arr[99]--; //최고점 -1
Arrays.sort(arr); //재정렬
}
System.out.printf("#%d %d\n", t + 1, arr[99] - arr[0]); //최저와 최고 차의 출력
}
}
}
728x90
'알고리즘 > SWEA' 카테고리의 다른 글
[Java] SWEA2805_농작물수확하기 (0) | 2022.03.16 |
---|---|
[Java] SWEA1873_상호의배틀필드 (0) | 2022.03.16 |
[Java] SWEA2001_파리퇴치 (0) | 2022.03.16 |
[Java] SWEA1289_원재의메모리복구하기 (0) | 2022.03.12 |
[Java] SWEA1954_달팽이숫자 (0) | 2022.03.12 |
댓글