ALGORITHM/PROGRAMMERS
[프로그래머스] 단체사진 찍기 (2017 카카오코드 본선)
0298
2021. 8. 7. 21:25
https://programmers.co.kr/learn/courses/30/lessons/1835
코딩테스트 연습 - 단체사진 찍기
단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두
programmers.co.kr
2021-08-07
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
class Solution {
static String[] arr = {"A", "C", "F" , "J", "M", "N", "R", "T"};
static String[] da;
static boolean[] vtd;
static int answer;
static boolean check(String str) {
for(int i = 0; i < da.length; i++) {
String a = String.valueOf(da[i].charAt(0));
String b = String.valueOf(da[i].charAt(2));
String op = String.valueOf(da[i].charAt(3));
int num = Character.getNumericValue(da[i].charAt(4));
int cal = Math.abs(str.indexOf(a) - str.indexOf(b)) - 1;
switch (op) {
case "=":
if(cal != num) return false;
break;
case ">":
if(cal <= num) return false;
break;
case "<":
if(cal >= num) return false;
break;
}
}
return true;
}
static void solve(String str, int cnt) {
if(cnt == arr.length) {
if(check(str)) answer++;
return;
}
for(int i = 0; i < arr.length; i++) {
if(!vtd[i]) {
vtd[i] = true;
solve(str+arr[i], cnt+1);
vtd[i] = false;
}
}
}
static int solution(int n, String[] data) {
answer = 0;
vtd = new boolean[arr.length];
da = data;
solve("", 0);
return answer;
}
}
|
cs |
#문제풀이
만들 수 있는 모든 조합을 만든 후, 조건에 맞는 것들만 카운트 했다.