[BaekJoon] 2562번 - 최댓값 (java)
1. 문제
👉 문제 바로가기
- 조건
| 시간 제한 | 메모리 제한 |
|---|---|
| 1초 | 128MB |
- 문제
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
예를 들어, 서로 다른 9개의 자연수
3, 29, 38, 12, 57, 74, 40, 85, 61
이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.
- 입력
첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.
- 출력
첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.
- 예제
| 입력 | 출력 |
|---|---|
| 3 29 38 12 57 74 40 85 61 |
85 8 |
2. 풀이
2개의 입력방식을 사용해서 결과를 출력한다.
- Scanner 클래스
- BufferedReader 클래스
2-1. Scanner 클래스
배열을 사용해 값을 비교한다.
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int[] arr = new int[9];
int max = 0;
int index = 0;
int cnt = 0;
for(int i=0;i<9;i++){
arr[i] = sc.nextInt();
cnt++;
if(arr[i] > max){
max = arr[i];
index = cnt;
}
}
System.out.println(max + "\n" + index);
}
}
위와같이 객체를 생성할 때, Scanner(System.in) 에서
System.in은 입력한 값을Byte 단위로 읽는 것을 뜻한다.
int형 데이터를 입력받기 위해
nextInt()메서드를 사용한다.
++는+ 1이다. 즉, cnt = cnt + 1; 이다.
[여기서 잠깐!]
2-2. BufferedReader 클래스 사용
① 배열 사용
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[9];
int max = 0;
int index = 0;
int cnt = 0;
for(int i = 0 ; i < 9 ; i++) {
arr[i] = Integer.parseInt(br.readLine());
cnt++;
if(max < arr[i]) {
max = arr[i];
index = cnt;
}
}
System.out.println(max + "\n" + index);
}
}
Integer.parseInt()을 사용해 String형을int형으로 변환시켜준다.
[여기서 잠깐!]
BufferedReader 클래스에 대해 더 알아보고 싶으면 여기를 클릭하면 된다.② 배열 사용 X
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int max = 0;
int index = 0;
for(int i=0;i<9;i++){
int val = Integer.parseInt(br.readLine());
if(max < val){
max = val;
index = i+1;
}
}
System.out.println(max + "\n" + index);
}
}
StringTokenizer를 사용해 문자열을 공백단위로 구분한 값들을
토큰이라고 한다.
while 조건문에서hasMoreTokens() 함수를 사용해 토큰 개수만큼 반복한다.
입력 후에 바로 비교하여저장여부를 결정하고 9번 반복이 끝나면 저장된 변수를 출력한다.
배열을 만들지 않아메모리가 절약된다.
3. 성능 비교
위에서 부터 순서대로
BufferedReader + 배열 X
BufferedReader + 배열
Scanner + 배열
입력의 경우 확실히 Scanner 보다는 BufferedReader 가 빠른 것을 볼 수 있다.
배열을 사용하지 않은 경우는 시간은 거의 비슷하지만 메모리가 조금이나마 적게 든다.
관련 페이지
Leave a comment