https://programmers.co.kr/learn/courses/30/lessons/1835
코딩테스트 연습 - 단체사진 찍기
단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두
programmers.co.kr
#include <string>
#include <vector>
#include <iostream>
using namespace std;
char Friend[8];
bool used[8];
int cnt;
void dfs(int le, char path[], vector<string>check) {
if (le==8) {
for(int x=0; x<check.size(); x++){
int a, b;
for (int y = 0; y < 8; y++) {
if (path[y] == check[x][0])
a = y;
else if (path[y] == check[x][2])
b = y;
}
int checkNum = check[x][4] - '0';
if (check[x][3] == '=') {
if (abs(a - b) -1 != checkNum)
return;
}
else if (check[x][3] == '>') {
if (abs(a - b) - 1 <= checkNum)
return;
}
else if(check[x][3] == '<') {
if (abs(a - b) - 1 >= checkNum)
return;
}
}
cnt++;
return;
}
for (int i = 0; i < 8; i++) {
if (used[i] == 1) continue;
path[le] = Friend[i];
used[i] = true;
dfs(le + 1, path, check);
used[i] = false;
}
}
// 전역 변수를 정의할 경우 함수 내에 초기화 코드를 꼭 작성해주세요.
int solution(int n, vector<string> data) {
int answer = 0;
Friend[0] = 'A';
Friend[1] = 'C';
Friend[2] = 'F';
Friend[3] = 'J';
Friend[4] = 'M';
Friend[5] = 'N';
Friend[6] = 'R';
Friend[7] = 'T';
cnt = 0;
char path[8] = { NULL, };
dfs(0, path, data);
answer = cnt;
return answer;
}
'APS > 프로그래머스' 카테고리의 다른 글
[힙(Heap)] 더 맵게 (0) | 2022.01.04 |
---|---|
[2020 KAKAO BLIND RECRUITMENT] 문자열 압축 C++ (0) | 2022.01.02 |
[Summer/Winter Coding(~2018)] 영어 끝말잇기 C++ (0) | 2021.12.30 |
[해시]위장 (0) | 2021.12.18 |
[Summer/Winter Coding(2019)] 멀쩡한 사각형 C++ (0) | 2021.12.18 |