반응형
백준 10818번 java 최소, 최대 (1차원 배열)
배열크기를 입력하고 for문으로 배열 원소를 입력하고 비교하기만 하면 되는 간단한 프로그램이다.
아래 코드는 틀렸습니다가 나와서 맨 아래 코드를 보시면 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import java.util.Scanner;
//baekjoon_10818
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int ar[] = new int[n];
int min, max;
min = Integer.MAX_VALUE;
max = Integer.MIN_VALUE;
for(int i=0; i<n; i++) {
ar[i] = sc.nextInt();
if(min > ar[i])
min = ar[i];
else if(max < ar[i])
max = ar[i];
}
System.out.println(min + " " + max);
}
}
|
cs |
우선 결론부터 얘기하면 이 코드로 제출했다가 '틀렸습니다.'를 받았다.
7행에서 n값을 입력하고 min은 MAX_VALUE로 max는 MIN_VALUE로 초기화한다.
13행부터 for문에서 배열원소를 입력하고 min보다 입력값이 더 작으면 min에 방급입력값을 저장한다.
처음 비교에서는 min이 MAX_VALUE로 초기화했기 때문에 바로 값이 저장된다.
마찬가지로 17행에서 max값도 비교하고 마지막 배열원소까지 입력하고 비교가 마치고 출력한다.
근데 이게 틀렸대... 왜지?? 아무튼 이거는 틀렸다니 냅두고 다른 코드를 보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int arr[] = new int[n];
for(int i=0; i<n; i++) {
arr[i] = sc.nextInt();
}
int min =0, max =0;
for(int i=1; i<n; i++) {
if(arr[i] < arr[min])
min = i;
else if(arr[i] > arr[max])
max = i;
}
System.out.println(arr[min]+" "+ arr[max]);
}
}
|
cs |
이거는 아무튼 뭐 정답이 됐다.
line8 : 배열선언을 한다.
line9 : for문으로 배열 초기화.
line12 : min, max를 선언하고 0으로 초기화.
line13 : 배열 원소는 0부터 지만 min, max가 0이므로 1부터 비교한다.
line14 : min(처음에는0번째)원소보다 i(그 다음 원소)번째 원소가 더 작으면 min에 i값을 준다.
max값도 마찬가지로 비교.
line19 : 출력.
후~
반응형
'프로그래밍 > 백준 알고리즘 코드' 카테고리의 다른 글
백준 2577번 java 숫자의 개수 (Array) (0) | 2020.09.04 |
---|---|
백준 2562번 java 최댓값 (1차원 배열) (0) | 2020.09.03 |
백준 10996번 java 별 찍기 - 21 for문 (0) | 2020.09.02 |
백준 2446번 java별 찍기 - 9 for()문이 여섯개!! (0) | 2020.08.30 |
백준 2523번 java 별 찍기 - 13 다중for문 (0) | 2020.08.27 |
댓글