본문 바로가기
알고리즘/프로그래머스

단체사진찍기

by 김어찐 2021. 9. 4.
728x90
package prog;

public class 단체사진찍기 {
    public static void main(String[] args) {
        Solution_단체사진찍기 s = new Solution_단체사진찍기();
        System.out.println(s.solution(2	,new String[]{"N~F=0", "R~T>2"}));
        System.out.println(s.solution(2	,new String[] {"M~C<2", "C~M>1"}));

    }
}

class Solution_단체사진찍기{
    static int N=8;
    static boolean[] check=new boolean[N];
    static char[] arr = new char[N];
    static char[] members = {'A', 'C', 'F', 'J', 'M', 'N','R', 'T'};
    static String[] oper;
    static int answer;
    public int solution(int n, String[] data) {
        answer=0;
        oper=data;
        perm(0);

        return answer;
    }

    private void perm(int cnt) {
        if(cnt==N){
            //System.out.println(Arrays.toString(arr));
            if(findCheck()) answer++;

            return;
        }
        for (int i = 0; i < N; i++) {
            if(check[i]) continue;
            arr[cnt]=members[i];
            check[i]=true;
            perm(cnt+1);
            check[i]=false;
        }
    }

    private boolean findCheck() {
        for (int i = 0; i < oper.length; i++) {
            char a = oper[i].charAt(0);
            char b = oper[i].charAt(2);
            char check =oper[i].charAt(3);
            int distance = oper[i].charAt(4)-48;
//            System.out.println("distance = " + distance);
            int dist = findDistance(arr,a,b);
            if(check=='='){
                if(dist!=distance) return false;
            }
            else if(check=='<'){
                if(dist>=distance) return false;
            }
            else if(check=='>'){
                if(dist<=distance) return false;
            }
        }
        return true;
    }

    private int findDistance(char[] array, char a, char b) {
        int posA=0;
        int posB=0;
        for (int i = 0; i < array.length; i++) {
            if(array[i]==a) posA=i;
            else if(array[i]==b) posB=i;
        }
        return Math.abs(posA-posB)-1;
    }
}
728x90

'알고리즘 > 프로그래머스' 카테고리의 다른 글

124 나라의 숫자 (자바)  (0) 2021.09.06
멀쩡한 사각형 (자바)  (0) 2021.09.06
카카오 프렌즈 컬러링북  (0) 2021.09.03
직업군 추천하기  (0) 2021.09.03
오픈채팅방  (0) 2021.09.03