개발자/C or C++

[백준] 2562번

Mosser 2021. 10. 2.
728x90
반응형

 

주의할 점이 있다면 인덱스 값입니다. 저도 이것 때문에 몇번틀리다가 원인을 알아냈습니다.

만약 배열에서 첫번째 값이 가장 큰 값이라면 배열의 인덱스는 0이지만 실제 값으로 출력할때는 1이 출력되어야 하므로 처음의 인덱스 값이 0이 아니라 1로 저장이 되어야 합니다.

위 방법이 별로이시면

나중에 출력하실 때, 인덱스값에 +1만 하셔서 출력하시는 방법도 있습니다!

아래 소스코드는 제가 최근에 풀었던 방법이고 함수를 이용하여 푼 문제입니다.

 

#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;

typedef struct answer{
        int index;
        int max;
}answer;

answer getValue(vector<int> arr){ //인덱스값과 최대값을 구하는 함수
        answer value; //answer 타입의 변수 선언
        value.index=1;  //answer의 인덱스 값을 0번째 인덱스로 저장해야하므로 인덱스 +1 값을 저장
        value.max=arr[0]; //answer의 max값을 0번째 배열 값으로 저장
        int i;

        for(i=1;i<9;i++){ //for문으로 arr배열을 순회하면서 value.max값보다 배열의 값이 클 경우 값을 바꾸고 인덱스 값도  바꾼다.
                if(value.max<arr[i]){
                        value.max=arr[i];
                        value.index=i+1;
                }
        }
        //저장된 value 값 반환
        return value;



}

int main(){
        vector<int> arr(9); //배열의 크기가 9인 벡터 선언
        int i=0;
        for(i=0;i<9;i++){
                scanf("%d",&arr[i]);// 배열에 순차적으로 값을 입력
                if(arr[i]>=100)
                        return 0;

        }

        answer value=getValue(arr); //answer 타입의 구조체에 값을 구하여 대입
        printf("%d\n%d",value.max,value.index); //최대값과 인덱스 값 출력

        return 0;

}

아래 소스코드는 함수를 이용하지 않고 메인함수에서 바로 푸는 코드입니다

 

#include <iostream>
using namespace std;

int main(){
    int max=0,i,index;
    int arr[9];

    for(i=0;i<9;i++){
        cin>>arr[i];
        if(arr[i]>max){
            max=arr[i];
            index=i;
        }
    }
    cout<<max<<endl;
    cout<<index+1<<endl;

}

.

반응형

'개발자 > C or C++' 카테고리의 다른 글

[백준] 3052번  (0) 2021.10.03
[백준] 2572번  (0) 2021.10.03
[백준] 10818번  (0) 2021.10.02
[백준] 2217번  (0) 2021.10.02
[백준] 11399번  (0) 2021.10.02

댓글