반응형
https://programmers.co.kr/learn/courses/30/lessons/1835
글쓴이의 답
개인적인 풀이 임으로
이것보다 더 좋은 알고리즘은 많음...
이렇게도 풀이하는구나.. 공유하기 위해 올림...
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
void permutation(vector<string> &data, vector<char> &temp, int start, int end, int size, int &count)
{
if (start == size)
{
bool result = true;
for(int i=0; i<data.size(); i++){
string test = data[i];
char check1 = test[0];
char check2 = test[2];
char check3 = test[3];
int distance = test[4] - '0';
vector<char>::iterator iter1 = find(temp.begin(), temp.end(), check1);
vector<char>::iterator iter2 = find(temp.begin(), temp.end(), check2);
int location1 = std::distance(temp.begin(), iter1);
int location2 = std::distance(temp.begin(), iter2);
int temp_distance = abs(location1 - location2)-1;
if(check3 == '='){
if (temp_distance != distance){
result = false;
break;
}
}
else if(check3 == '<'){
if (temp_distance >= distance){
result = false;
break;
}
}
else if(check3 == '>'){
if (temp_distance <= distance){
result = false;
break;
}
}
}
if(result == true){
count++;
}
return;
}
for(int i = start; i < end; i++)
{
swap(temp[start], temp[i]);
permutation(data, temp, start + 1, end, size, count);
swap(temp[start], temp[i]);
}
}
// 전역 변수를 정의할 경우 함수 내에 초기화 코드를 꼭 작성해주세요.
int solution(int n, vector<string> data) {
int answer = 0;
vector<char> temp = {'A', 'C', 'F', 'J', 'M', 'N', 'R', 'T'};
permutation(data, temp, 0, 8, 8, answer);
return answer;
}
꾸준히 하다보면 실력이 늘겠지..
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스][C++] 124 나라의 숫자 (0) | 2022.03.21 |
---|---|
[프로그래머스][C++] 멀쩡한 사각형 (0) | 2022.03.20 |
[프로그래머스][C++] 카카오프렌즈 컬러링북 (0) | 2022.03.20 |
[프로그래머스][C++] 오픈채팅방 (0) | 2022.03.20 |
[프로그래머스][C++] 문자열 압축 (0) | 2022.03.20 |