링크 → https://www.acmicpc.net/problem/10819
아영
package Baekjoon.java.silver;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class boj10819 {
static int max,N,nums[];
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
max = -10000;
nums = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
nums[i] = Integer.parseInt(st.nextToken());
}
boolean[] checked = new boolean[N];
int[] ordered = new int[N];
dfs(0,checked,ordered);
System.out.println(max);
}
private static void dfs(int idx, boolean[] checked,int[] ordered){
if(idx==N){
int prev = ordered[0];
int result = 0;
for (int i = 1; i < N; i++) {
result += Math.abs(nums[prev]-nums[ordered[i]]);
prev = ordered[i];
}
if(max<result) max = result;
}
for (int i = 0; i < N; i++) {
if(checked[i]) continue;
checked[i] = true;
ordered[idx] = i;
dfs(idx+1,checked,ordered);
checked[i] = false;
}
}
}
은영
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class baekjoon10819 {
static int N,ans=0;
static int[] arr, num;
static boolean visit[];
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
N = Integer.parseInt(br.readLine());
arr = new int[N];
num = new int[N];
visit = new boolean[N];
st = new StringTokenizer(br.readLine()+" ");
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
func(0);
System.out.println(ans);
}
private static void func(int cnt) {
if(cnt==N)
{
int sum=0;
for (int i = 0; i < N-1; i++) {
sum+= Math.abs(num[i]-num[i+1]);
}
ans = Math.max(ans, sum);
return;
}
for (int i = 0; i < N; i++) {
if(!visit[i]) {
visit[i] = true;
num[cnt] = arr[i];
func(cnt+1);
visit[i] = false;
}
}
}
}
건
package day_0524;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ10819 {
static int n;
static int[] arr;
static int[] isSelected;
static boolean[] isVisited;
static int answer;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stk;
n = Integer.parseInt(br.readLine());
stk = new StringTokenizer(br.readLine());
arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(stk.nextToken());
}
isSelected = new int[n];
isVisited = new boolean[n];
permu(0);
System.out.println(answer);
}
static void permu(int cnt) {
if (cnt == n) {
int tAnswer = 0;
tAnswer = calc();
if (tAnswer >= answer) {
answer = tAnswer;
}
return;
}
for (int i = 0; i < n; i++) {
if(!isVisited[i]) {
isSelected[cnt] = arr[i];
isVisited[i] = true;
permu(cnt + 1);
isVisited[i] = false;
}
}
}
static int calc() {
int result = 0;
for (int i = 0; i < n - 1; i++) {
result += Math.abs(isSelected[i] - isSelected[i+1]);
}
return result;
}
}
용문
class BJ10819 {
private var N: Int = 0
private var nums: [Int] = []
private var selectedNums: [Int] = []
private var selected: [Bool] = []
private var before: Int = 0
private var answer: Int = 0
func solve() {
readComponents()
calc()
printAnswer()
}
private func readComponents() {
self.N = Int( readLine()! )!
self.nums = readLine()!.split(separator: " ").map({ Int($0)! })
self.selected = .init(repeating: false, count: N)
self.selectedNums = .init(repeating: 0, count: N)
}
private func calc() {
calcFrom(count: 0)
}
private func calcFrom(count: Int) {
if count == N {
var value = 0
for index in selectedNums.indices {
if index == N - 1 { break }
value += abs(selectedNums[index] - selectedNums[index + 1])
}
answer = max(answer, value)
return
}
for index in 0..<N {
if selected[index] { continue }
selected[index] = true
selectedNums[count] = nums[index]
calcFrom(count: count + 1)
selected[index] = false
}
}
private func printAnswer() {
print(answer)
}
}
BJ10819().solve()