programmers_단체사진 찍기_java
2023. 6. 3. 13:29ㆍAlgorithm/Programmers
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/1835
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
private static String[] friends = {"A", "C", "F", "J", "M", "N", "R", "T"};
public int solution(int n, String[] data) {
int answer = 0;
answer = dfs("", new boolean[8], data);
return answer;
}
private int dfs(String names, boolean[] isVisited, String[] datas) {
if (names.length() == 7) {
if (isSatisfaction(names, datas)) {
return 1;
}
return 0;
}
int res = 0;
for (int i = 0; i < 8; i++) {
if (!isVisited[i]) {
isVisited[i] = true;
res += dfs( names + friends[i], isVisited, datas);
isVisited[i] = false;
}
}
return res;
}
// 만족 여부
public boolean isSatisfaction(String names, String[] datas) {
for (String data : datas) {
int f1 = names.indexOf(data.charAt(0));
int f2 = names.indexOf(data.charAt(2));
char op = data.charAt(3);
int dist = data.charAt(4) -'0';
if (op == '=') {
if (!(Math.abs(f1 - f2) == dist+1)) return false;
} else if (op == '>') {
if (!(Math.abs(f1 - f2) > dist+1)) return false;
} else if (op == '<') {
if (!(Math.abs(f1 - f2) < dist+1)) return false;
}
}
return true;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
programmers_3 x n 타일링_java (0) | 2023.06.10 |
---|---|
programmers_빛의 경로 사이클_java (0) | 2023.06.08 |
programmers_유사 칸토어 비트열_java (0) | 2023.06.02 |
programmers_택배 배달과 수거하기_java (0) | 2023.06.01 |
programmers_교점에 별 만들기_java (0) | 2023.06.01 |