[백준] 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
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2577번 숫자의 개수 C/C++ 문제 풀이 1차원배열 (0) | 2019.08.05 |
---|---|
[백준] 2920번 음계 C/C++ 문제 풀이 1차원배열 (2) | 2019.07.29 |
[백준] 10818번 최소, 최대 C++ 문제 풀이 1차원배열 (0) | 2019.07.25 |
[백준] 1110번 더하기 사이클 C / C++ 문제 풀이 while문 (0) | 2019.07.24 |
[백준] 10951번 A+B - 4 C++ 문제 풀이 while문 (0) | 2019.07.19 |