최대 최소 문제를 오랜만에 다시 풀어봤다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int arr[] = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++) {
arr[i]=Integer.parseInt(st.nextToken());
}
int min=1000000;
int max=-1000000;
for(int k : arr) {
if(k<min) {
min=k;
}
if(k>max) {
max=k;
}
}
System.out.println(min+" "+max);
}
}
이제는 어느정도 체화가 돼서 잘 풀린다
최솟값에 주어지는 정수의 최댓값을 지정하고 반복문을 돌려 배열에 저장된 원소값끼리 서로 비교하여 최솟값을 구해준다. 최댓값은 반대로 주어지는 정수의 최솟값을 지정하여 최솟값을 구할때와 마찬가지 방식으로 구해준다.
위는 배열을 이용해서 메모리도 많이 잡아먹고 처리 시간도 오래걸린다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int num=0;
StringTokenizer st = new StringTokenizer(br.readLine());
int min=1000000;
int max=-1000000;
for(int i=0; i<N; i++) {
num=Integer.parseInt(st.nextToken());
if(num<min) {
min=num;
}
if(num>max) {
max=num;
}
}
System.out.println(min+" "+max);
}
}
어차피 배열을 굳이 만들지 않아도 두번째 줄에 입력된 값들이 min과 max에 저장되기 때문에 위와 같이 풀면 메모리 용량도 아끼고 빠르게 풀 수 있다.
'알고리즘 풀이' 카테고리의 다른 글
[복습][백준]10810번: 공 넣기 - java 풀이 (0) | 2023.06.14 |
---|---|
[복습][백준]2562번: 최댓값 - java 풀이 (0) | 2023.06.13 |
[백준] 10811번: 바구니 뒤집기 - java 풀이 (0) | 2023.05.16 |
[복습][백준]10807번: 개수 세기 - java 풀이 (0) | 2023.05.16 |
[백준]3052번: 나머지 - java 풀이 (0) | 2023.04.13 |