메뉴 건너뛰기

Programing

BAEKJOON

2450

관리자 2020.04.11 09:16 조회 수 : 40

C++

#include <cstdio>

#include <cstring>

#include <algorithm>

using namespace std;

int N,arr[100010],n[4],case_[6][3]={{1,2,3},{1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}};

int arr2[4][4],min_=100010;

int main(){

scanf("%d",&N);

for(int i=1;i<=N;i++){

scanf("%d",&arr[i]);

if(arr[i]==1){

n[1]++;

}else if(arr[i]==2){

n[2]++;

}else{

n[3]++;

}

}

for(int i=0;i<6;i++){

        int id=1;

        memset(arr2,0,sizeof(arr2));

        for(int j=0;j<3;j++){

            for(int k=0;k<n[case_[i][j]];k++,id++){

                if(arr[id]!=case_[i][j]){

                    arr2[case_[i][j]][arr[id]]++;

                }

            }

        }

        int r=0;

        for(int j=1;j<=3;j++){

            for(int k=1;k<=3;k++){

                if(j==k)

                    continue;

                int a=min(arr2[j][k],arr2[k][j]);

                r+=a;

            }

        }

        r/=2;

        r+=2*(abs(arr2[1][2]-arr2[2][1]));

        min_=min(min_,r);

}

printf("%d",min_);

}

번호 제목 글쓴이 날짜 조회 수
공지 안내사항 관리자 2019.12.21 163
45 2468 관리자 2019.12.21 8
44 2458 관리자 2020.04.11 44
43 2457 관리자 2020.04.11 47
42 2454 관리자 2020.04.11 43
» 2450 관리자 2020.04.11 40
40 2339 관리자 2020.04.11 41
39 2307 관리자 2019.12.21 8
38 2250 관리자 2019.12.21 8
37 2233 관리자 2019.12.21 6
36 2170 관리자 2019.12.21 7
35 2132 관리자 2019.12.21 7
34 2096 관리자 2019.12.21 8
33 2042 관리자 2020.04.11 45
32 2003 관리자 2020.04.11 39
31 1991 관리자 2019.12.21 8
30 1967 관리자 2019.12.21 6
29 1966 관리자 2020.04.11 45
28 1946 관리자 2020.04.11 39
27 1874 관리자 2020.04.11 43
26 1839 관리자 2020.04.11 44
25 17611 관리자 2019.12.21 7
24 1753 관리자 2019.12.21 8
23 1742 관리자 2020.04.11 6
22 1720 관리자 2020.04.11 6
21 16210 관리자 2020.04.11 57
20 16201 관리자 2020.04.11 44
19 15971 관리자 2019.12.21 6
18 14865 관리자 2019.12.21 8
17 14503 관리자 2019.12.21 7
16 14502 관리자 2019.12.21 6
위로