๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(Programmers)

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋‹จ์ฒด์‚ฌ์ง„ ์ฐ๊ธฐ( Level 2, 2017 ์นด์นด์˜ค์ฝ”๋“œ ๋ณธ์„ )

by ์•ˆ์ฃผํ˜• 2021. 10. 20.

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋‹จ์ฒด์‚ฌ์ง„ ์ฐ๊ธฐ

๋‹จ์ฒด์‚ฌ์ง„ ์ฐ๊ธฐ ๊ฐ€์„์„ ๋งž์•„ ์นด์นด์˜คํ”„๋ Œ์ฆˆ๋Š” ๋‹จ์ฒด๋กœ ์†Œํ’์„ ๋– ๋‚ฌ๋‹ค. ์ฆ๊ฑฐ์šด ์‹œ๊ฐ„์„ ๋ณด๋‚ด๊ณ  ๋งˆ์ง€๋ง‰์— ๋‹จ์ฒด์‚ฌ์ง„์„ ์ฐ๊ธฐ ์œ„ํ•ด ์นด๋ฉ”๋ผ ์•ž์— ์ผ๋ ฌ๋กœ ๋‚˜๋ž€ํžˆ ์„ฐ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฐฐ์น˜๊ฐ€ ๋ชจ๋‘

programmers.co.kr

 

์ฝ”๋“œ

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

bool check(char dir,int want,int dis){
    if(dir=='='){
        if(dis==want) return true;
    }
    else if(dir=='>'){
        if(dis>want) return true;
    }
    else if(dir=='<'){
        if(dis<want) return true;
    }
    return false;
}

int solution(int n, vector<string> data) {
    int answer = 0;
    string friends="ACFJMNRT";

    do{
        bool flag=true;
        for(int i=0; i<data.size(); i++){
            char first,second,dir;
            int want;
            first=data[i][0];
            second=data[i][2];
            dir=data[i][3];
            want=data[i][4]-'0';
            int dis=abs(int(friends.find(first))-int(friends.find(second)))-1;

            if(!check(dir,want,dis)) flag=false;
        }
        if(flag) answer++;
    }while(next_permutation(friends.begin(),friends.end()));


    return answer;
}

๋Œ“๊ธ€