[실패] [BOJ 2422] 한윤정이 이탈리아에 가서 아이스크림을 사먹는데

Leehyemin·2023년 3월 12일
0

알고리즘_백준

목록 보기
4/7
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
//2422 한윤정이 이탈리아에 가서 아이스크림을 사먹는데
// Created by polcomicepute

int main(){ 
    int N=0, M=0;
    int A[10000], B[10000], num[200];
    vector<int> res;

    cin >> N >> M;
    
    for(int i=0; i<M; i++){
        cin >> A[i] >> B[i];    
    }
    for (int i=0 ;i<N;i++){
        num[i]=i+1;
    }

    // for(int i=0; i<M; i++){
    //     cout << A[i] <<" " << B[i] <<endl;    
    // }

    //* (N개 중 3개의 맛 선택 조합 수==pos) - (불가능 맛 조합 수==imp)
    int pos = (N*(N-1)*(N-2))/(3*2*1);
    int imp = 0;

    //* 불가능 맛 조합 
    for(int i=0; i<M;i++){
        for (int j=0;j<N;j++){
            if (num[j]==A[i] || num[j]==B[i]) //입력받은 2개의 맛 + 하나 더 -> 불가능한 3개의 맛 조합 
                continue;
            else{
                vector<int> v = {A[i],B[i],num[j]};
                sort(v.begin(),v.end()); //! 조합 개념 : 순서 무관 -> sort한 후, 동일하면 out (이것은 효율적인가?)
                int no = 1;

                for(int k=0; k<imp;k++){
                    if(res[k]==v[0]*100+v[1]*10+v[2])
                        no=0;
                }
        
                if (no) {
                    res.push_back(v[0]*100+v[1]*10+v[2]);
                    imp++;
                } 
                // for(int k=0; k<3;k++)
                //     cout << v[k];
                // cout << " " << endl; 

            }
        
        }


    }
    // for(int i=0; i<imp; i++){
    //     cout << res[i] <<endl;    
    // }

    cout << pos - imp << endl;    
    

    return 0;
}

0개의 댓글