본문 바로가기
백준

[백준] 2562번 : 최댓값 – JAVA [자바]

by Hongwoo 2022. 7. 7.
반응형

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

 

2562번: 최댓값

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

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 2562번 최댓값은 브론즈 3 난이도의 구현 문제이다. 이 문제에서는 9개의 자연수가 주어지고 이 9개의 자연수 중에 최댓값과 그리고 그 최댓값이 몇 번째 수인지를 출력하면 되는 문제이다.

 

이 문제는 2가지 방법을 이용해서 풀었다. 첫 번째 방법은 HashMap을 이용해서 푸는 방식이다. 이 문제는 최댓값만 출력하는 게 아닌 최댓값의 순서도 출력해야 해서 HashMap을 이용했다. Key와 Value 모두 Integer 형식으로 저장하고 Key에는 입력받는 자연수를, 그리고 Value로는 그 자연수에 순서, 즉 몇 번째로 들어오는지를 저장했다. 자세한 코드는 밑에서 참고할 수 있다. 

 

그리고 두 번째 방식은 순서를 int형 변수로 저장하는 방법이다. 만약에 현재 최댓값보다 더 큰 자연수를 입력받으면 현재 최댓값, 그리고 현재 최댓값의 순서를 갱신하는 방식이다. 물론 이 방법이 Map을 따로 사용하지 않아서 공간 복잡도 면에서는 더 효율적이다. 자세한 코드는 밑에 있다.

 


  • 코드 1 (HashMap)

 

import java.io.*;
import java.util.*;
public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Map<Integer, Integer> map = new HashMap<>();
        int max = Integer.MIN_VALUE;
        for (int i = 1; i <= 9; i++) {
            int n = Integer.parseInt(br.readLine());
            map.put(n,i);
            max = Math.max(max, n);
        }
        System.out.print(max + "\n" + map.get(max));
    }
}

 


  • 코드 2 (변수)

 

import java.io.*;
import java.util.*;
public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int max = Integer.MIN_VALUE;
        int order = 1;
        for (int i = 1; i <= 9; i++) {
            int n = Integer.parseInt(br.readLine());
            if (n > max) {
                max = n;
                order = i;
            }
        }
        System.out.print(max + "\n" + order);
    }
}

 

 

반응형

댓글