카테고리 없음

[C] 백준 #2455, #2460, #2476

멘멘 2023. 11. 12. 19:07

#2455

문제 설명

기차가 1번역부터 4번역까지 갈때, 기차 안에 사람이 가장 많을 때의 사람 수를 계산하여야 한다.


  내림
1 0 32
2 3 13
3 28 25
4 39 0

 위와 같은 경우에서는 기차 안에 사람이 가장 많을 떄는 2번역의 경우로 총 42명의 사람이 기차에 있을 때다. 기차에 사람이 가장 많을 떄의 사람 수를 계산하면 된다.

 

풀이 과정

먼저 기차가 네 역을 지날때의 사람 수를 담을 배열 train을 만든다. max는 최대 몇명인지 구하기 위한 변수이다.

반복문을 통해 나가고 들어오는 사람 수를 입력받고, train[i]에 연산하여 값을 넣어준다. 

이때 매 반복마다 train[i]가 max보다 크면 max에 값을 갱신하여 최댓값을 출력하여주었다.

#include <stdio.h>

int main() {
    int train[4];
    int max = 0;
    for(int i = 0; i<4; i++){
        int out, in;
        scanf("%d",&out);
        scanf("%d",&in);
        if(i == 0)
            train[i] = out;
        else
            train[i] = train[i-1] -out;
        train[i] += in;
        if( i != 0 && train[i] > max)
            max = train[i];
        else if( i == 0){
            max = train[0];
        }
    }
    printf("%d",max);
    return 0;
}

 

 

#2460

문제 설명

위와 조건은 똑같으나 역의 개수가 10개로 바뀌는 등의 변화가 있었다.

 

풀이 과정

위와 비슷하게 풀이를 진행하였다.

#include <stdio.h>

int main() {
    int train[10];
    int max = 0;
    for(int i = 0; i<10; i++){
        int out, in;
        scanf("%d",&out);
        scanf("%d",&in);
        if(i == 0)
            train[i] = out;
        else
            train[i] = train[i-1] -out;
        train[i] += in;
        if( i != 0 && train[i] > max)
            max = train[i];
        else if( i == 0){
            max = train[0];
        }
    }
    printf("%d",max);
    return 0;
}

 

#2476

문제 설명

3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.

  1. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 
  2. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다. 
  3. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.

N명이 이 게임에 참여했을 때, 가장 많은 상금을 받은 사람의 상금을 출력하면 된다.

 

풀이 과정

소위 말하는 노가다(...)로 이 문제를 풀어서 크게 설명할 것이 많지 않다.

N은 사람 수, max는 최대 상금을 담기 위한 변수이고 반복문을 통해 주사위의 결과를 담을 a,b,c를 입력받아서 값을 일일히 대소비교한다. 그 뒤 연산을 해준후 이전 max값과 비교하여 갱신해주었다.

#include <stdio.h>

int main() {

    int N;
    scanf("%d", &N);
    int max = 0;
    for(int i = 0; i<N; i++){
        int a,b,c,res=0;
        scanf("%d %d %d", &a,&b,&c);
        if(a==b){
            if(b==c)
                res = 10000 + a*1000;
            else
                res = 1000 + a*100;
        }else if(b==c){
            res = 1000 + b*100;            
        }else if(a==c){
            res = 1000 + a*100;
        }else{
            if(a>=b && a>=c)
                res = a * 100;
            else if(b>=a&&b>=c)
                res = b * 100;
            else
                res = c * 100;
        }

        if(max<res){
            max = res;
        }
    }

    printf("%d",max);
    return 0;
}