반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/1835
코딩테스트 연습 - 단체사진 찍기
단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두
programmers.co.kr
풀이
class Solution {
char[] chars = new char[]{'A', 'C', 'F', 'J', 'M', 'N', 'R', 'T'};
int[] visit = new int[chars.length];
String str = "";
String[] data;
int answer = 0;
public int solution(int n, String[] data) {
this.data = data;
setStr(0);
return answer;
}
private void setStr(int n) {
if (n == chars.length) {
if (check())
++answer;
return;
}
for (int i = 0; i < chars.length; ++i) {
if (visit[i] == 1) continue;
visit[i] = 1;
str += chars[i];
setStr(n + 1);
visit[i] = 0;
str = str.substring(0, str.length() - 1);
}
}
private boolean check() {
for (String condition : data) {
int idx1 = str.indexOf(condition.charAt(0));
int idx2 = str.indexOf(condition.charAt(2));
int diff = Math.abs(idx1 - idx2) - 1;
char op = condition.charAt(3);
int limit = Integer.parseInt(condition.charAt(4) + "");
switch (op) {
case '=':
if (diff != limit) return false;
break;
case '<':
if (diff >= limit) return false;
break;
case '>':
if (diff <= limit) return false;
break;
}
}
return true;
}
}
반응형
'개발 > 알고리즘' 카테고리의 다른 글
codeup 3733 우박수 길이 (3n+1) (large) (0) | 2021.09.05 |
---|---|
[codeup] 4503 바이러스 (0) | 2021.09.04 |
[프로그래머스] 뉴스 클러스터링 (0) | 2021.09.03 |
[프로그래머스] 오픈채팅방 (0) | 2021.08.26 |
[프로그래머스] 문자열 압축 (0) | 2021.08.25 |
최근댓글