정보
분류 : 1차원 배열
문제
풀이
- 풀이 1 ( BufferedReader + BufferedWriter + 배열 ) → 148ms
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
// InputStream : 자바의 가장 기본이 되는 입력 스트림
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// OutputStreamWriter : 자바의 가장 기본이 되는 출력 스트림
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int[] arr = new int[9]; // 입력 9개 받는 array
int max = arr[0]; // max 값을 담을 변수
int index = 0; // max 값의 index를 담을 변수
for(int i = 0 ; i < arr.length ; i++) {
int num = Integer.parseInt(br.readLine());
arr[i] = num; // 입력한 숫자를 배열에 담기
if(max < arr[i]) { // arr[0~8]의 값이 arr[0]보다 크면
max = arr[i]; // arr[0]의 값을 큰 값으로 대체
index = i + 1; // index는 i + 1
};
};
br.close(); // 입력 종료
bw.write(max + "\n" + index); // 결과 출력
bw.flush(); // 출력 비우고
bw.close(); // 출력 종료
}
}
- 풀이 2 ( BufferedReader + printf() + 배열사용X ) → 140ms
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
// InputStream : 자바의 가장 기본이 되는 입력 스트림
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(val > max) {
max = val;
index = i + 1;
}
}
System.out.printf("%d\n%d", max, index);
br.close();
}
}
풀이 후기
풀이 1은 배열을 사용한 풀이 방법이고 풀이 2는 배열을 쓰지 않은 풀이 방법이다.
풀이 1은 배열에 9개의 방을 미리 만들어두고 미리 만들어둔 방에 for문을 이용하여 입력한 값을 각 방에 입력한다. 배열 내에 들어있는 각각의 값과 배열의 0번째 값을 가진 max변수를 if문을 이용하여 비교한다. 비교하며 그에 맞는 max변수의 값을 바꿔치기하면서 그에 대한 index값도 부여된다.
arr = [ 3, 29, 38, 12, 57, 74, 40, 85, 61 ] | ||||
i | arr[i] | max < arr[i] | max | index = i + 1 |
0 | 3 | 3 < 3 (false) |
0 | - |
1 | 29 | 3 < 29 (true) |
29 | 2 |
2 | 38 | 29 < 38 (true) |
38 | 3 |
3 | 12 | 38 < 12 (false) |
||
4 | 57 | 38 < 57 (true) |
57 | 5 |
5 | 74 | 57 < 74 (true) |
74 | 6 |
6 | 40 | 74 < 40 (false) |
||
7 | 85 | 74 < 85 (true) |
85 | 8 |
8 | 61 | 85 < 61 (false) |
||
최종 max = 85, index = 8 |
풀이 2는 '서로 다른 9개의 자연수'라는 문구를 통해 굳이 배열을 사용하지 않고 for문 조건식에 i를 8번만 돌릴 수 있도록 조건을 두었다. for문이 8번 돌면서 if문을 통해 val변수와 max변수의 값을 비교하며 값을 바꿔치기하고 index 또한 1을 더하여 배열의 값이 아닌 max변수에 해당되는 자리수를 표현하였다. 풀이 2 같은 경우 배열을 만들 필요가 없어 메모리가 절약 된다.
입력값 : 3, 29, 38, 12, 57, 74, 40, 85, 61 | ||||
i | val | val > max | max | index = i + 1 |
0 | 3 | 3 > 0 (true) |
3 | 1 |
1 | 29 | 29 > 3 (true) |
29 | 2 |
2 | 38 | 38 > 29 (true) |
38 | 3 |
3 | 12 | 12 > 38 (false) |
||
4 | 57 | 57 > 38 (true) |
57 | 5 |
5 | 74 | 74 > 57 (true) |
74 | 6 |
6 | 40 | 40 > 74 (false) |
||
7 | 85 | 85 > 74 (true) |
85 | 8 |
8 | 61 | 61 > 85 (false) |
||
최종 max = 85, index = 8 |
reference
'💡문제 풀이 > 백준 - JAVA' 카테고리의 다른 글
최소, 최대 / 10818 (0) | 2023.11.20 |
---|---|
X보다 작은 수 / 10871 (1) | 2023.11.20 |
개수 세기 / 10807 (0) | 2023.11.20 |
A+B - 4 / 10951 (1) | 2023.11.17 |
A+B - 5 / 10952 (1) | 2023.11.17 |