728x90
์ฝ๋ฉ์ผ๋ก ์์ด ์กฐํฉ์ ๋ํด์ ์นด์ดํธ ํด์ฃผ๋ ๋ฌธ์ ๋ฅผ ์ ํด๋ณธ ์ ์ด ์์๋ค. ์์ผ๋ก ํ์ด๋ดค๋๋ฐ ์ด๊ฑฐ๋ฅผ ์ด๋ป๊ฒ ์กฐ๊ฑด์ ํ๋ ํ๋ ์ฒดํฌํ์ง ๋ผ๋ ์๊ฐ ๋ฟ์ด์๊ณ , ํด๊ฒฐํ ๋ฐฉ๋ฒ์ ๋ชฐ๋๋ค. ๊ฒฐ๊ตญ ๊ตฌ๊ธ๋ง์ผ๋ก ๋ค๋ฅธ ์ฌ๋์ ๋ต์์ ๋ณด๋ฉด์ ๊ณต๋ถํ๋ค.
next_permutation์ ์ด์ฉํด์ ์ค๋ฆ์ฐจ์์์ ๋ด๋ฆผ์ฐจ์๊น์ง์ ๋ชจ๋ ์์ด ์กฐํฉ์ ๊ณ ๋ คํ ์ ์์๋ค. do while ๋ฌธ์ ํตํด์ ์กฐ๊ฑด์ด ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ ์ ์์๊ณ ์ํ๋ ์กฐ๊ฑด์ flag๋ฅผ ํตํด์ ์นด์ดํธํ ์ง ๋ง์ง๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด์๋ค.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// ์ ์ญ ๋ณ์๋ฅผ ์ ์ํ ๊ฒฝ์ฐ ํจ์ ๋ด์ ์ด๊ธฐํ ์ฝ๋๋ฅผ ๊ผญ ์์ฑํด์ฃผ์ธ์.
int solution(int n, vector<string> data) {
int answer = 0;
// next_permutation ์์ด์ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐฐ์ด์ ์ค์ ํ๋ค.
string friends = "ACFJMNRT";
do {
bool flag = true;
// ์ด n๊ฐ์ ์กฐ๊ฑด์ ๋ชจ๋ ํ์ํด์ผ ํ๋ค.
for(int i = 0 ; i < n ; i++) {
int friend1_idx = 0;
int friend2_idx = 0;
// ์์ด์ ๋ฐฐ์ด ์ค ์กฐ๊ฑด์ ํด๋นํ๋ Member์ index๊ฐ์ ์ฐพ์์ผ ํ๋ค.
for(int j = 0 ; j < friends.size() ; j++) {
if(friends[j] == data[i][0])
friend1_idx = j;
if(friends[j] == data[i][2])
friend2_idx = j;
}
// gap ๋ณ์์ ์กฐ๊ฑด์ ํด๋นํ๋ ๋ฉค๋ฒ๋ค์ด ์ผ๋ง๋ ๋จ์ด์ ธ์๋์ง ๊ณ์ฐํด์ค๋ค.
int gap = max(friend1_idx-friend2_idx, friend2_idx-friend1_idx)-1;
// ๋ง์ฝ = ํ์๊ฐ ์๊ณ gap์ด ์กฐ๊ฑด์ ๋ถํฉํ์ง ์๋๋ค๋ฉด flag๋ฅผ false ํด์ค๋ค.
if(data[i][3] == '=') {
if(gap != data[i][4] - '0') {
flag = false;
break;
}
}
// ๋ง์ฝ > ํ์๊ฐ ์๊ณ gap์ด ์กฐ๊ฑด์ ๋ถํฉํ์ง ์๋๋ค๋ฉด flag๋ฅผ false ํด์ค๋ค.
else if(data[i][3] == '>') {
if(gap <= data[i][4] - '0') {
flag = false;
break;
}
}
// ๋ง์ฝ < ํ์๊ฐ ์๊ณ gap์ด ์กฐ๊ฑด์ ๋ถํฉํ์ง ์๋๋ค๋ฉด flag๋ฅผ false ํด์ค๋ค.
else if(data[i][3] == '<') {
if(gap >= data[i][4] - '0') {
flag = false;
break;
}
}
}
// break๋ก ํ์ถํ๊ฑด ์ํ๊ฑด flag์ T/F ์ ๋ฌด์ ๋ฐ๋ผ answer๋ฅผ ์ฆ๊ฐ์ํจ๋ค.
if(flag == true) answer++;
} while(next_permutation(friends.begin(), friends.end()));
return answer;
}
'๐ Self Study > ๐ Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค (๋ฉ์ฉกํ ์ฌ๊ฐํ, Summer/Winter Coding(2019)) C++ (0) | 2022.01.03 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค (ํฌ์ผ๋ชฌ, ์ฐพ์๋ผ ํ๋ก๊ทธ๋๋ฐ ๋ง์คํฐ) C++ (0) | 2022.01.02 |
ํ๋ก๊ทธ๋๋จธ์ค (ํํ, 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ) C++ (0) | 2022.01.01 |
ํ๋ก๊ทธ๋๋จธ์ค (์ ๊ตญ์ฌ์ฌ, ์ด๋ถํ์) C++ (0) | 2022.01.01 |
ํ๋ก๊ทธ๋๋จธ์ค (๋ ๋งต๊ฒ, ํ(Heap)) C++ (0) | 2022.01.01 |