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

[Jungol] 정올 1839 배부른 돼지

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

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

Approach

① 초기 left = 3, right = 9

② 먹이의 횟수를 만족(Y)하면서 기존 right값보다 작으면 right 값 갱신

    불만족(N)할 때, 기존 left 값보다 큰 경우 left 값 갱신 

③ left > right이면 모순 그렇지 않으면 left 값 출력

※ n = 0일 때, 모순으로 가준하여 "F" 출력

 

Sample Case 1 시뮬레이션

초기 left = 3, right = 9

4 N  left = 5 | right = 9  "최소 5회 이상 먹이를 줘야 한다."

7 Y → left = 4 | right = 7 → "7번까지만 주어도 만족한다."

5 N → left = 6 | right = 7 → "최소 6회 이상 먹이를 줘야 한다."

6 Y → left = 6 | right = 6 → "6번까지만 주어도 만족한다."

▶ left(= 6) ≤ right(= 6) 이므로 모순 X

 

Sample Case 2 시뮬레이션

초기 left = 3, right = 9

5 Y → left = 3 | right = 5 → "5번까지만 주어도 만족한다."

6 N → left = 7 | right = 5 → "최소 7회 이상 먹이를 줘야 한다."

▶ left(= 7) > right(= 5)이므로 모순


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
    // freopen("input.txt", "r", stdin);
    int N, eatCnt;
    char isOk;
     
    int left = 3, right = 9;
    scanf("%d", &N);
    if (N == 0) {
        printf("F");
        return 0;
    }
 
    for (int i = 0; i < N; ++i) {
        scanf("%d", &eatCnt);
        scanf(" %c", &isOk);
        
        if (isOk == 'N' && left < eatCnt + 1) left = eatCnt + 1;
        else if (isOk == 'Y' && right > eatCnt) right = eatCnt;
    }
 
    if (left > right) printf("F");
    else printf("%d", left);
}

 

반응형

'PS 문제 풀이 > Jungol' 카테고리의 다른 글

[Jungol] 정올 1035 최대값  (0) 2021.03.16
[Jungol] 정올 1936 꼭지점 개수  (0) 2021.03.16
[Jungol] 정올 1942 하얀모자  (0) 2021.03.15
[Jungol] 정올 2194 요플레 공장  (0) 2021.03.15
[Jungol] 정올 3292 집합관리  (0) 2021.03.15

댓글