단체사진 찍기
https://programmers.co.kr/learn/courses/30/lessons/1835
이문제 못풀었음.
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
//"N~F=0", "R~T>2"
int solution(int n, vector<string> data) {
int answer(0);
vector<char> vChar = { 'A', 'C', 'F', 'J', 'M', 'N', 'R', 'T' };
do
{
bool flag = true;
for (int i = 0; i < data.size(); i++)
{
int FrontLocation(0);
int SecondLocation(0);
int dist(0);
int Number = data[i][4] - '0';
for (int j = 0; j < 8; j++)
{
if (data[i][0] == vChar[j])
{
FrontLocation = j;
}
if (data[i][2] == vChar[j])
{
SecondLocation = j;
}
}
dist = abs(FrontLocation - SecondLocation )-1;
if (data[i][3] == '=')
{
if (Number != dist)
{
flag = false;
break;
}
}
else if (data[i][3] == '>')
{
if (dist <= Number)
{
flag = false;
break;
}
else
{
flag = true;
}
}
else if (data[i][3] == '<')
{
if (dist >= Number)
{
flag = false;
break;
}
}
}
if (flag == true)
{
answer++;
}
} while (next_permutation(vChar.begin(), vChar.end()));
return answer;
}
int main()
{
int n = 2;
vector<string> vTemp = { "N~F=0", "R~T>2" };
int vResult = solution(n, vTemp);
return 0;
}
-
do{}while(next_permutation))구조 내에서
do 내에 문제조건의 for문만큼 반복문 확인 -
첫째 문자와 둘째 문자 간격을 구하는데,
-
그간격이 = , < , > 조건에 안맞으면 flag = false 준다.
문제좋았음.
Author And Source
이 문제에 관하여(단체사진 찍기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@imalive77/단체사진-찍기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)