반응형
programmers.co.kr/learn/courses/30/lessons/1835
순열 구현문제였습니다.
풀이방법
8!의 모든 순열을 확인하면서 data의 조건에 부합하는지를 확인하면 됩니다. 8! * 100 < 1억번 연산이므로 1초 이내로 문제를 해결할 수 있습니다. 따라서 next_permutation함수를 사용하면 됩니다.
Code
#include <bits/stdc++.h>
using namespace std;
bool isOk(string friends, char a, char b, char op, int num){
int aIdx = friends.find(a), bIdx = friends.find(b);
if(op == '=') if(abs(aIdx-bIdx) == num+1) return true;
if(op == '>') if(abs(aIdx-bIdx) > num+1) return true;
if(op == '<') if(abs(aIdx-bIdx) < num+1) return true;
return false;
}
int solution(int n, vector<string> data) {
int answer = 0;
int cnt = 0;
string friends = "ACFJMNRT";
do{
int flag = 0;
for(auto d : data){
char a = d[0];
char b = d[2];
char op = d[3];
int num = d[4]-'0';
if(!isOk(friends,a,b,op,num)) {flag = 1; break;}
}
if(!flag) answer++;
}while(next_permutation(friends.begin(),friends.end()));
return answer;
}
'Algorithm > DFS' 카테고리의 다른 글
(C++) - 백준(BOJ) 2580번 : 스도쿠 (0) | 2021.07.05 |
---|---|
(C++) - 프로그래머스(2021 Dev-Matching: 웹 백엔드 개발자) : 다단계 칫솔 판매 (0) | 2021.07.01 |
(C++) - 프로그래머스(2019 카카오 개발자 겨울 인턴십) : 불량 사용자 (0) | 2021.05.07 |
(Javascript) - 프로그래머스(고득점 kit : 동적계획법) : N으로 표현 (0) | 2021.05.06 |
(C++) - 프로그래머스(월간 코드 챌린지 시즌2) : 모두 0으로 만들기 (0) | 2021.04.21 |