Dev Hyeri

◖코딩 테스트◗▬▬▬▬▬▬▬▬▬/백준

[백준] 2562 최댓값(설명/코드/정답)

_hyeri 2024. 8. 11. 18:20

 

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

 

 

1. 요구 사항 이해

시간, 메모리 제한 : 1초 / 128MB

 

9개의 중복 없는 자연수 중 최댓값을 찾고 몇 번째 수인지 구하는 프로그램

자연수는 100 보다 작다

 

 

2. 설계/검증 

 

복잡도

시간 복잡도  최악의 경우  공간 복잡도
O(1)   O(1)

 

입력 받기: O(1) (상수 시간, 9개의 입력), 최댓값 찾기: O(9) (상수 시간, 9개의 요소 순회) 시간 복잡도는 O(1)

 

배열 크기: O(9), 추가 변수: O(1) (max와 maxIndex) 공간 복잡도는 O(1)  

 

 

 

 

3. 정상 코드

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        // 입력을 위한 객체 생성
        Scanner scan = new Scanner(System.in);

        // 중복 없는 9개의 자연수 입력
        int[] nums = new int[9];
        for (int i = 0; i < nums.length; i++) {
            nums[i] = scan.nextInt();
            // 자연수 범위 유효성 검사
            if (nums[i] <= 1 || nums[i] >= 100) {
                System.out.println("입력 자연수는 100 보다 작다");
                return;
            }
        }

        int max = nums[0];
        int maxIndex = 0;
        for (int i = 0; i < nums.length; i++) {
            if (max < nums[i]) {
                max = nums[i];
                maxIndex = i;
            }
        }

        //결과 출력
        System.out.println(max);
        System.out.println(maxIndex + 1);
        
        scan.close();
    }
}