반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/1835
풀이
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 |
최근댓글