https://programmers.co.kr/learn/courses/30/lessons/1835
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
bool check(int order[], int n, vector<string> data)
{
for (int i = 0; i < n; ++i)
{
string d = data[i];
// 두 문자 위치 사이의 간격
int distance = abs(order[d[0] - 'A'] - order[d[2] - 'A']) - 1;
// 문제 조건에 일치하지 않으면 false
if (!(d[3] == '=' && distance == d[4] - '0')
&& !(d[3] == '>' && distance > d[4] - '0')
&& !(d[3] == '<' && distance < d[4] - '0'))
{
return false;
}
}
// 문제 조건이 모두 일치하면 true
return true;
}
int solution(int n, vector<string> data) {
char perm[8] = { 'A', 'C', 'F', 'J', 'M', 'N', 'R', 'T' };
int cnt = 0;
// 오름차순 순열 -> 위치값 저장
do {
int order[26] = { 0, };
for (int i = 0; i < 8; ++i)
{
order[perm[i] - 'A'] = i + 1;
}
// 해당 순열이 조건에 맞으면 cnt++
if (check(order, n, data))
{
++cnt;
}
} while (next_permutation(perm, perm + 8));
return cnt;
}
순열을 브루트 포스로 풀이하면 된다
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스]연습문제 : 다음 큰 숫자(level 2)(c++) (0) | 2020.05.19 |
---|---|
[프로그래머스]2019 카카오 개발자 겨울 인턴십 : 튜플(level 2)(c++) (0) | 2020.05.19 |
[프로그래머스] 연습문제 : 올바른 괄호 (level 2)(c++) (0) | 2020.05.14 |
[프로그래머스]연습문제 : 가장 큰 정사각형 찾기 (level 2)(c++) (0) | 2020.05.14 |
[프로그래머스]힙(Heap) : 라면공장 (level 2)(c++) (0) | 2020.05.14 |
댓글