개발자/C or C++
[백준] 2562번
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 |
댓글