시간&메모리 제한
문제
입력&출력
문제풀이
package com.back;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Back_10819 {
static int n ;
static int[] arr,temp;
static int result;
static boolean[] visited;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
arr =new int[n];
visited =new boolean[n];
temp =new int[n]; // 각순열 케이스를 담아줄 임시 저장소
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i <n ; i++) {
arr[i] =Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
perm(0);
System.out.println(result);
}
private static void perm(int count){
if(count == n){
int sum =0;
for (int i = 0; i <n-1 ; i++) {
sum += Math.abs(temp[i] - temp[i+1]);
}
result = Math.max(result,sum);
return;
}
for (int i = 0; i <n ; i++) {
if(visited[i]){
continue;
}
visited[i] =true;
temp[count] = arr[i];
perm(count+1);
visited[i] =false;
}
}
}
- 이 문제는 브루드 포스 알고리즘 문제입니다.
- 여기서 활용할 방법은 순열입니다.
- 각각의 숫자에 대한 위치가 정해져야 풀 수 있기 때문에 순서가 필요합니다.
- 숫자의 구성 및 위치 지정이 끝나면 값의 차이의 절댓값을 결정해줍니다.
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
백준_1051 숫자 정사각형(자바) / 브루드 포스 알고리즘 (0) | 2021.07.19 |
---|---|
백준_10974 모든 순열(자바) / 브루드 포스 알고리즘 (0) | 2021.07.18 |
백준_13565 침투(자바) / 그래프 탐색 (0) | 2021.07.16 |
백준_7562 나이트의 이동(자바) / 그래프 탐색 (0) | 2021.07.15 |
백준_2644 촌수계산(자바) / 그래프 탐색 (0) | 2021.07.14 |