[문제]
https://programmers.co.kr/learn/courses/30/lessons/1835
[풀이]
처음 문제 봤을 때 Level2라는게 믿기지 않았다.
도저히 감이 안잡혀서 다른 분들의 풀이를 봤는데 생각보다 간단한 문제였다.
next_permutation 함수를 통해 프렌즈들이 일렬로 설 수 있는 모든 경우의 수를 구할 수 있다.
각 case마다 주어진 조건을 만족하는지 확인 후 , 모든 조건을 만족할 경우 answer에 +1을 해주어
주어진 조건을 만족하여 사진을 찍는 모든 경우의 수를 구할 수 있다.
[코드]
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int len =0;
char sign;
bool check(int diff)
{
if(sign == '=')
return diff==len;
else if(sign == '>')
return diff > len ? true : false;
else if(sign == '<')
return diff < len ? true : false;
}
int solution(int n, vector<string> data) {
int answer = 0;
string friends = "ACFJMNRT";
do{
bool bCheck = true;
for(int i=0;i<data.size();i++){
int diff = friends.find(data[i][0]) - friends.find(data[i][2]);
sign = data[i][3];
len = data[i][4]-'0';
bCheck = check(abs(diff)-1);
if(!bCheck) break;
}
if(bCheck) answer++;
}while(next_permutation(friends.begin(),friends.end()));
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 캐시(C++) (0) | 2021.08.24 |
---|---|
[프로그래머스] 메뉴 리뉴얼(C++) (0) | 2021.08.22 |
[프로그래머스] 실패율(C++) (0) | 2021.08.22 |
[프로그래머스] 부족한 금액 계산하기(C++) (0) | 2021.08.02 |
[프로그래머스] 동굴 탐험(C++) (0) | 2021.05.03 |