title: "[프로그래머스] 단체사진 찍기 Python 파이썬 해설 (Level 2) - 이도훈"
cleanUrl: "programmers/1835"
description: "프로그래머스 Level 2 문제 [단체사진 찍기]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

#include <string>
#include <cstdlib>
#include <vector>
#include <algorithm>

using namespace std;

int absval(int x) {
    return x < 0 ? -x : x;
}

// 전역 변수를 정의할 경우 함수 내에 초기화 코드를 꼭 작성해주세요.
int solution(int n, vector<string> data) {
    int answer = 0;
    string names = "ACFJMNRT";
    
    do {
        int flag = 1;
        
        for (auto cond: data) {
            char a = cond[0];
            char b = cond[2];
            char op = cond[3];
            
            int v = cond[4] - '0';
            int distance = absval(names.find(a) - names.find(b)) - 1;
            
            if (op == '=' && distance != v) {
                flag = 0;
                break;
            } else if (op == '>' && distance <= v) {
                flag = 0;
                break;
            } else if (op == '<' && distance >= v) {
                flag = 0;
                break;
            }
        }
        if (flag == 1) answer++;
    } while (next_permutation(names.begin(), names.end()));
    
    return answer;
}

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges