https://www.acmicpc.net/problem/2422



조합의 경우의 수가 3가지로 정해져있기 때문에

3중 for문을 통해 쉽게 해결할 수 있다.


고민했던 부분은 3가지의 숫자를 고를 때, 

이전에 가능한 경우의 수를 다시 고른것을 어떻게 확인을 할지 고민했었는데


2중 for문과 3중 for문의 시작값을 이전 for문의 시작값보다 하나씩 크게 설정해주면 

순차적으로 확인하기 때문에 중복될 일이 없게 된다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
using namespace std;
 
int main(){
    
    int N,M;
    cin>>N>>M;
    
    int a,b;
    int arr[201][201]={0};
    for(int i=0;i<M;i++){
        scanf("%d %d",&a,&b);
        arr[a][b]=arr[b][a]=1;
    }
    
    int ans=0;
    for(int i=1;i<=N-2;i++){
        for(int j=i+1;j<=N-1;j++){
            
            if(arr[i][j])
                continue;
            
            for(int k=j+1;k<=N;k++){
                
                if(arr[i][k] || arr[j][k])
                    continue;
                
                ans++;
            }
        }
    }
    printf("%d\n",ans);
    return 0;
}
cs


'알고리즘(BOJ) > 브루트포스' 카테고리의 다른 글

백준 15686번 - 치킨 배달  (0) 2019.07.29

+ Recent posts