관리 메뉴

cococo-coding

2953번. 나는 요리사다 (c++풀이) 본문

[BOJ] 코드 모음/C++_learning 문제집

2953번. 나는 요리사다 (c++풀이)

_dani 2023. 12. 6. 13:57

최종 코드

2가지 버전으로 풀었는데

첫 번째는 변수(점수 4개)를 일일이 입력받는 방식, 두 번째는 배열로 입력받는 방식이다. 

 

1. 변수 4개를 생성해 입력받기

#include <iostream>
using namespace std;

int main() {
    //1. 다섯 참가자가 얻은 네 개의 평가 점수를 입력받는다.
    //2. 한 참가자의 점수의 합을 구한다.
    //3. 우승자를 구한다.
    //4. 우승자의 번호와 점수를 출력한다.

    //1
    int num=0, s1=0, s2=0, s3=0, s4=0;
    int max=0, maxIndex=0;
    int sum=0;
    
    for(int i=1; i<=5; i++){
        cin >> s1 >> s2 >> s3 >> s4;
        //2
        sum=s1+s2+s3+s4;     
        //3
        if(sum>max){
            max=sum;
            maxIndex=i;
        }
    }
    //4
    cout << maxIndex << ' ' << max ;
    return 0;
}

 

2. 배열로 입력받기

#include <iostream>
using namespace std;

int main() {
    //배열 ver
    //1. 다섯 참가자가 얻은 네 개의 평가 점수를 입력받는다.
    //2. 한 참가자의 점수의 합을 구한다.
    //3. 우승자를 구한다.
    //4. 우승자의 번호와 점수를 출력한다.

    //1
    int num=0, arr[5]={0,};
    int sum=0, maxIndex=0, max=0; 

    //2
    for(int i=1; i<=5; i++){ //5명 점수 입력받기
        for(int j=1; j<5; j++){ //한명의 점수 4개 입력받기
            cin >> arr[i];
            sum+=arr[i];
        }           
        //3
        if(sum>max){
            max=sum;
            maxIndex=i;
        }
         sum=0;   
    }
    //4
    cout << maxIndex << ' ' << max ;
    return 0;
}

배열ver에서는 sum을 초기화해주는 '위치'가 중요하다.

나 같은 경우는 처음에 if(sum>max) 블럭안에 sum=0; 초기화 구문을 넣고 계속 오류가 났는데,

이는 sum이 max보다 큰 경우에만 해당 블럭이 실행되면서 sum=0;이 실행되므로, sum이 max보다 작으면 sum값은 그대로 누적되게 된다. 

 

2023.12.06