π [λ°±μ€μκ³ λ¦¬μ¦ νμ΄] Q.10819 μ°¨μ΄λ₯Ό μ΅λλ‘ λ¬Έμ νμ΄ - java
π λ¬Έμ
https://www.acmicpc.net/problem/10819
Nκ°μ μ μλ‘ μ΄λ£¨μ΄μ§ λ°°μ΄ Aκ° μ£Όμ΄μ§λ€. μ΄λ, λ°°μ΄μ λ€μ΄μλ μ μμ μμλ₯Ό μ μ ν λ°κΏμ
λ€μ μμ μ΅λκ°μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
A[0] - A[1] | + | A[1] - A[2] | + β¦ + | A[N-2] - A[N-1] |
π μ κ·Όλ²
Q.10819 μ°¨μ΄λ₯Ό μ΅λλ‘ λ¬Έμ μ λλ€.
Nκ°μ μ μλ‘ μ΄λ£¨μ΄μ§ λ°°μ΄ Aκ° μ£Όμ΄μ‘μ λ
μ΄ λ°°μ΄μ λ€μ΄μλ μ μμ μμλ₯Ό μ μ ν λ°κΏ λ€μ μμ μ΅λκ°μ ꡬνλ λ¬Έμ μ λλ€.
λ°°μ΄ Aμ μ μμ μμλ₯Ό λ°κΎΌ λͺ¨λ κ²½μ°λ₯Ό νμΈν΄ μ΅λκ°μ ꡬν μ μμ΅λλ€.
brute force λ°©μμΌλ‘ νμ΄κ° κ°λ₯νκ³
brute forceλ‘ λͺ¨λ κ²½μ°λ₯Ό νμΈνκΈ° μν΄
λ°±νΈλνΉμ μ¬μ©ν΄μ λ΅μ ꡬν μ μμ΅λλ€.
λ°°μ΄ Aμ μ μμ λν΄ λͺ¨λ κ²½μ°μ λν΄
|A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]|
μμ κ³μ°νλ©° μ΅λκ°μ ꡬν μ μμ΅λλ€.
π» μ½λ
package problem.brute;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main_10819 {
static int n;
static boolean[] visited;
static int[] sequence,numbers;
static int max = Integer.MIN_VALUE;
public static void main(String[] args) throws IOException {
input();
dfs (1);
System.out.println(max);
}
public static void input() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
sequence = new int[n+1];
numbers = new int [n+1];
visited = new boolean[n+1];
String [] temp = br.readLine().split(" ");
for(int i=1; i<=n; i++){
numbers[i] = Integer.parseInt(temp[i-1]);
}
}
public static void dfs(int depth) {
if(depth==n+1){
caculate();
return;
}
for(int i=1; i<=n; i++){
if(!visited[i]){
visited[i] = true;
sequence[depth] = numbers[i];
dfs(depth+1);
visited[i] = false;
}
}
}
public static void caculate(){
int sum = 0;
for(int i=1; i<=n-1; i++){
sum+= Math.abs(sequence[i]-sequence[i+1]);
}
max = Math.max(max,sum);
}
}