통나무건너뛰기 [JAVA]

LeHoODU·2024년 4월 11일
0
post-thumbnail

💡풀이방안

입력받은 통나무들의 높이를 정렬한 후 재배열
재배열 방법은
ex) 2 4 5 7 9 로 예를 들어 보면
int[] arr = new int[5]
int[0] = 2, int[5-1] = 4, int[1] = 5, int[5-2] = 7 ....
=> [2 5 9 7 4] 와 같이 정렬 후 차가 가장 큰 값 선별

public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(bf.readLine());
        int[] anar = new int[n];

        for (int i = 0 ; i < n ; i ++){
            int answer = 0;
            int s = Integer.parseInt(bf.readLine());
            int[] arr = new int[s];
            int[] tmp = new int[s];
            StringTokenizer st = new StringTokenizer(bf.readLine());
            for (int j = 0 ; j < s ; j++){
                arr[j] = Integer.parseInt(st.nextToken());
            }

            Arrays.sort(arr);
            int idx = 0;
            int idx2 = 0;
            while (idx < arr.length){
                if (arr.length % 2 ==0){
                    tmp[idx2] = arr[idx];
                    tmp[arr.length-idx2-1] = arr[idx+1];
                    idx += 2;
                    idx2 += 1;
                }else{
                    if (idx == arr.length-1) {
                        tmp[arr.length/2] = arr[arr.length-1];
                        break;
                    }
                    tmp[idx2] = arr[idx];
                    tmp[arr.length-idx2-1] = arr[idx+1];
                    idx += 2;
                    idx2 += 1;
                }
            }
            System.out.println(Arrays.toString(tmp));
            for (int t = 0; t < tmp.length-1; t++){
                if (Math.abs(tmp[t]-tmp[t+1]) > answer) answer = Math.abs(tmp[t]-tmp[t+1]);
            }
            anar[i] = answer;
        }
        for (int i : anar){
            System.out.println(i);
        }
    }
profile
Back-End Developer

0개의 댓글