본문 바로가기
PS 문제 풀이/Jungol

[Jungol] 정올 1942 하얀모자

by 까망 하르방 2021. 3. 15.
반응형

출처: http://www.hancom.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1215&sca=50

Approach

- 한 명의 입장

2 2 2 → 첫번째 사람 입장에서 자신을 제외하고 2명이 하얀모자를 사용하고 있다고 합니다.

       그렇다면 전체 인원 중에서 하얀모자를 사용하고 있는 사람은

       본인이 포함(2 + 1)되거나 아닌 경우(2)로 나누어 집니다.

 

 

- 최소값으로 지목한 사람의 입장 

case: [0 0 1 0 0 1] → 2 2 1 2 2 1 

: 자신을 제외하고 하얀모자를 사용하고 있는 경우는

  『1』이며 실제 하얀모자를 사용하고 있는 사람 수 『1』 + 1 입니다.

 

case: [1 1 1 1 0 1]  4 4 4 4 5 4 

: 최솟값  『4』 이며, 실제 하얀모자를 사용하고 있는 사람 수 『4』 + 1

 

case: [0 0 0 1] → 1 1 1 0

최솟값  = 『0』 이며, 실제 하얀모자를 사용하고 있는 사람 수 『0』 + 1

 

불가능한 경우는 없으므로,

모든 사람이 하얀모자를 사용하지 않는 경우를 제외하고는 최소값 + 1이 됩니다.

ex) case [0 0 0 0] → 0 0 0 0 → 하얀 모자를 사용한 사람 = 0 

 


#include <stdio.h>
int N, arr[50];
int min = 51, max = 0;
int main() {
    scanf("%d", &N);
     
    for(int i=0; i<N; ++i){
        scanf("%d", arr + i);
        if(min > arr[i]) min = arr[i];
        if(max < arr[i]) max = arr[i];
    }
     
    // 모자가 존재하지 않는 경우 (모든 원소 = 0)
    if(max == 0){
        printf("0");
        return 0;
    }
     
    printf("%d", min + 1);
}

 

반응형

댓글