https://programmers.co.kr/learn/courses/30/lessons/1835
코딩테스트 연습 - 단체사진 찍기
단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두
programmers.co.kr
-- 문제 풀이
1. 순열 구하기
2. 조건 값 계산
class Solution {
static int answer = 0;
static char[] people = {'A', 'C', 'F', 'J', 'M', 'N', 'R', 'T'};
public int solution(int n, String[] data) {
answer = 0;
char[] ch = new char[8];
boolean[] visit = new boolean[8];
dfs(0, ch, visit, n, data);
return answer;
}
void dfs(int k, char[] ch, boolean[] visit, int n, String[] data){
if(k==8){
for(int i=0; i<n; i++) {
int interval = 0;
int cnt = 0;
for(int j=0; j<8; j++){
if(ch[j] == data[i].charAt(0) || ch[j] == data[i].charAt(2)){
cnt++;
continue;
}
if(cnt==1){
interval++;
}else if(cnt==2){
break;
}
}
if(data[i].charAt(3)=='='){
if(interval != data[i].charAt(4) - '0') return;
}else if(data[i].charAt(3)=='<'){
if(interval >= data[i].charAt(4) - '0') return;
}else if(data[i].charAt(3)=='>')
if(interval <= data[i].charAt(4) - '0') return;
}
answer++;
return;
}
for(int i=0; i<8; i++){
if(!visit[i]){
ch[k] = people[i];
visit[i] = true;
dfs(k+1,ch,visit,n,data);
visit[i] = false;
}
}
}
}반응형
'프로그래머스' 카테고리의 다른 글
| [Oracle] 고양이와 개는 몇 마리 있을까 (0) | 2023.12.17 |
|---|---|
| [Oracle] 동명 동물 수 찾기 (0) | 2023.12.17 |
| [Oracle] 중복 제거하기 (0) | 2023.12.17 |
| [Oracle] 입양 시각 구하기(1) (0) | 2023.11.28 |
| [SQL] 조건에 부합하는 중고거래 댓글 조회하기 - 프로그래머스 (0) | 2023.11.21 |