반응형
접근 방법)
배열을 이용하지 않고 for문 안에서 단순한 크기 비교를 통해 문제를 풀 수 있다.하지만 배열 파트인 만큼 1차원 배열을 사용하여 문제를 풀어보도록 하자.
크기가 N인 1차원 배열을 생성한 후 두 번째 줄에 입력받은 값들을 모두 배열 안에 넣어준다.그리고 배열 안의 값들을 하나씩 비교하면서 앞 값과 비교했을 때 크면 max, 작으면 min으로 할당하여 N-1번 배열까지 반복작업을 하면 최대, 최솟값을 구할 수 있다.
▷ 1차원 배열 생성
1차원 배열 생성은 for문을 이용하여 쉽게 나타낼 수 있다.
int[] g = new int[N];
for(int i = 0; i < N; i++){
int a = s.nextInt(); // Scanner s = new Scanner(System.in)
g[i] = a;
}
배열 [0]부터 배열 [N-1] 번까지 값을 넣어주는 반복 작업으로 1차원 배열을 생성할 수 있다.
▷ max, min를 구하기 위한 배열 안에서 값들의 크기 비교
int max = g[0];
int min = g[0];
for(int j= 0; j < n; j++){
if(g[j] < min){
min = g[j];
}
if(g[j] > max){
max = g[j];
}
}
앞 값과 비교하여 클 때는 max에 할당, 작을 때는 min에 할당하게 코드를 작성하여 배열 크기만큼 반복을 돌리게 되면 배열안의 최댓값과 최솟값을 구할 수 있다.
정답 코드 1)
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int[] g = new int[n]; // 1차원 배열 생성
for(int i = 0; i < n; i++){ // 배열 안에 값들 집어넣기
int x = s.nextInt();
g[i] = x;
}
int max = g[0];
int min = g[0];
for(int j= 0; j < n; j++){
if(g[j] < min){ // 최솟값 구하는 방법
min = g[j];
}
if(g[j] > max){ // 최댓값 구하는 방법
max = g[j];
}
}
System.out.print(min+" "+max);
}
}
앞써 1차원 배열을 이용하여 배열 안의 값들 비교를 통하여 문제를 해결하는 방법이다.
정답 코드 2)
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int max = -1000000;
int min = 1000000;
for(int i= 0; i < n; i++){
int a = s.nextInt();
if(a < min){
min = a;
}
if(a > max){
max = a;
}
}
System.out.print(min+" "+max);
}
}
배열을 이용하여 풀지 않은 방법이다.
문제에서 주어진 배열 안의 값의 범위는 -1,000,000 ~ 1,000,000이다.
그러기 때문에 max가 될 수 있는 최솟값인 -1,000,000과 min가 될 수 있는 최댓값인 1,000,000을 초기값으로 설정한 후 첫 번째 줄에서 입력받은 N만큼 반복문을 실행하여 값들을 비교를 통해 최댓값과 최솟값을 구해낼 수 있다.
반응형
'Baekjoon 자바 코드 > 1차원 배열' 카테고리의 다른 글
[백준] 10813번 공 바꾸기 풀이 코드 (Java 자바) (0) | 2024.07.30 |
---|---|
[백준] 10810번 공 넣기 풀이 코드 (Java 자바) (0) | 2024.07.29 |
[백준] 2562번 최댓값 풀이 코드 (Java 자바) (1) | 2024.07.23 |
[백준] 10871번 x보다 작은 수 풀이 코드 (Java 자바) (0) | 2024.07.09 |
[백준] 10807번 개수 세기 풀이 코드 (Java 자바) (0) | 2024.07.08 |