[programmers] 단체사진 찍기
in Algorithm on Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/1835
import java.util.*;
class Solution {
String[] persons = new String[]{"A", "C", "F", "J", "M", "N", "R", "T"};
boolean[] visited = new boolean[8];
int answer = 0;
public int solution(int n, String[] data) {
Map<String,Integer> result = new HashMap<>();
dfs(data, result, 0);
return answer;
}
void dfs(String[] data, Map<String,Integer> result, int depth){
if(depth == 8){
if(isCheck(data, result)){
answer++;
}
}else{
for(int i = 0 ; i < 8 ; i++){
if(!visited[i]){
visited[i] = true;
result.put(persons[i], depth);
dfs(data, result, depth+1);
visited[i] = false;
}
}
}
}
boolean isCheck(String[] data, Map<String,Integer> result){
for(String info : data){
String[] arr = info.split("");
int cnt = Integer.parseInt(arr[4]);
int cal = Math.abs(result.get(arr[0]) - result.get(arr[2])) - 1;
if(arr[3].equals(">")){
if( cal <= cnt ) return false;
}else if(arr[3].equals("<")){
if( cal >= cnt ) return false;
}else{
if( cal != cnt ) return false;
}
}
return true;
}
}