https://programmers.co.kr/learn/courses/30/lessons/1835
중요개념
- next_permutaion(배열의 시작주소, 끝 주소) : 순열을 구해준다, algorithm 헤더
#include <vector>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
bool pos_check(vector<char> s, vector<string> data) {
for (int i = 0; i < data.size(); i++) {
int first;
int second;
int num = data[i][4] - '0';
for (int j = 0; j < 8; j++) {
if (data[i][0] == s[j]) {
first = j;
}
if (data[i][2] == s[j]) {
second = j;
}
}
if (data[i][3] == '=') {
if (abs(second - first)-1 != num) {
return false;
}
}
else if (data[i][3] == '>') {
if (abs(second - first)-1 <= num) {
return false;
}
}
else if (data[i][3] == '<') {
if (abs(second - first)-1 >= num) {
return false;
}
}
}
return true;
}
int solution(int n, vector<string> data) {
vector<char> s = {'A', 'C', 'F', 'J', 'M', 'N', 'R', 'T'};
int answer = 0;
do {
if (pos_check(s, data)) {
answer++;
}
} while (next_permutation(s.begin(), s.end()));
return answer;
}
int main() {
int n = 2;
vector<string> data = {"N~F=0", "R~T>2"};
cout<<solution(n, data);
}
/*
1. 순열구한다
2. 조건을 다 대입한다.
3. 같을 조건, 클조건, 작을조건 if로 나타내기
4. tur false체크는 함수로적을 것
5. 간격이란 = 일때 s-f -1 일 때 간격이다
6. > 이면
*/
'알고리즘 > 프로그래머스' 카테고리의 다른 글
2021 카카오공채 - 신규 아이디 추천 (0) | 2021.02.28 |
---|---|
프로그래머스 level2 - 소수 찾기 (0) | 2020.04.06 |
프로그래머스 level2 - 프린터 (0) | 2020.04.05 |
2019카카오 인턴쉽 - 불량 사용자 (0) | 2020.04.03 |
2020 카카오 기출 괄호 변환 (0) | 2020.03.13 |