[백준] 2562번 최댓값 C++ 문제 풀이 1차원배열

2019. 7. 26. 12:54알고리즘/백준

728x90
반응형

문제

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.

예를 들어, 서로 다른 9개의 자연수

3, 29, 38, 12, 57, 74, 40, 85, 61

이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.

입력

첫 째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.

출력

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.


예제 입력 1

 

3

29

38

12

57

74

40

85

61


예제 출력 1

 

85

8


문제 풀이

#include <iostream>
#include <cstring>

using namespace std;

int main(void){
    int intArr[9], sortArr[9];
    
    for(int i = 0; i < 9; i++)
     cin>>intArr[i];
     
    memcpy(sortArr, intArr, 9*sizeof(int));
    
    int temp;
    for(int i = 0; i < 9; i++)
        for(int j =i; j > 0; j--)
            if(sortArr[j] < sortArr[j-1]){
                temp = sortArr[j];
                sortArr[j] = sortArr[j-1];
                sortArr[j-1] = temp;
            }
    cout<<sortArr[8]<<endl;
    for(int i = 0; i < 9; i++)
        if(sortArr[8] == intArr[i])
            cout<<i+1;
}

먼저 최대값을 구해야 하는데 중요한 건 그 값의 입력받은 순서를 기억해야 합니다. 그래서 intArr과 sortArr을 각각 선언하여 하나는 맨 끝에 최대값 옮기도록 하고 남은 배열 하나는 원래 입력받은 순서를 기억하기 위해 냅뒀습니다.

굳이 정렬 알고리즘 쓰지 않아도 쉽게 찾고 풀 수 있지만 여기서는 한번 써봤습니다.. 전 게시물에 가면 쉽게 찾는 방법이 있습니다.

 

temp변수를 선언하고  정렬 알고리즘으로 최대값을 배열 맨 끝에 옮긴 다음에는 이 숫자의 값을 가진 intArr배열의 위치를 찾아서 마지막에 출력하도록 하였습니다. 정렬 알고리즘은 나중에 차차 다루도록 하겠습니다.

 

출처 : https://www.acmicpc.net/problem/2562

 

2562번: 최댓값

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.

www.acmicpc.net

 

728x90
반응형