반응형
https://www.acmicpc.net/problem/2562
- 문제
- 문제 풀이
백준 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);
}
}
반응형
'백준' 카테고리의 다른 글
[백준] 1546번 : 평균 – JAVA [자바] (0) | 2022.07.07 |
---|---|
[백준] 11720번 : 숫자의 합 – JAVA [자바] (0) | 2022.07.07 |
[백준] 2884번 : 알람 시계 – JAVA [자바] (0) | 2022.07.06 |
[백준] 11021번 : A+B - 7 – JAVA [자바] (0) | 2022.07.06 |
[백준] 15552번 : 빠른 A+B – JAVA [자바] (0) | 2022.07.06 |
댓글