본문 바로가기

BAEKJOON/구현

백준 2562번 [최댓값](C++)-yes6686- 티스토리

728x90
SMALL

백준 문제 풀이: 2562 [최댓값]


문제 링크: https://www.acmicpc.net/problem/2562

문제 설명:

9개의 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 값이 몇 번째 수인지 출력하는 프로그램을 작성하세요.

입력 조건:

  • 첫째 줄부터 아홉 번째 줄까지 자연수가 주어집니다. (1 ≤ 자연수 ≤ 100)

출력 조건:

  • 첫째 줄에 최댓값을 출력합니다.
  • 둘째 줄에 최댓값이 몇 번째 수인지 출력합니다.

문제 해결 코드


#include <iostream>
using namespace std;

int main() {
    int arr[9]; // 9개의 숫자를 저장할 배열
    int maxVal = -1; // 최댓값 초기화
    int index = -1;  // 최댓값의 인덱스 초기화

    // 입력받기
    for (int i = 0; i < 9; i++) {
        cin >> arr[i];
    }

    // 최댓값과 인덱스 찾기
    for (int i = 0; i < 9; i++) {
        if (arr[i] > maxVal) {
            maxVal = arr[i];
            index = i + 1; // 인덱스는 1부터 시작
        }
    }

    // 결과 출력
    cout << maxVal << '\n' << index << endl;

    return 0; // 프로그램 정상 종료
}

코드 설명

위 코드는 9개의 자연수 중 최댓값을 찾고, 해당 최댓값이 몇 번째 수인지 출력합니다.

  • 배열 입력:
    • `arr[9]` 배열에 9개의 숫자를 입력받습니다.
  • 최댓값 탐색:
    • `maxVal` 변수를 사용하여 최댓값을 저장합니다.
    • `index` 변수에 최댓값이 위치한 1-based 인덱스를 저장합니다.
    • 반복문을 통해 배열의 모든 값을 순회하며 최댓값과 인덱스를 갱신합니다.
  • 출력:
    • 최댓값과 해당 인덱스를 각각 출력합니다.

시간 복잡도 분석:

  • 입력: 9개의 값을 입력받는 데 O(9).
  • 최댓값 탐색: 배열을 한 번 순회하므로 O(9).

따라서 전체 시간 복잡도는 O(1)로 상수 시간입니다.


결과

다음은 입력 예시와 출력 결과입니다:

입력:
3
29
38
12
57
74
40
85
61

출력:
85
8

위 입력에서는 최댓값이 85이고, 이는 8번째 입력값입니다.

다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!

728x90
LIST