풀이방법에는 크게 두 가지가 있는 것 같다.
배열사용, 리스트 사용
배열을 사용하면 최대값과 최소값을 구해야하고
리스트를 사용하면 정렬하여 첫 번째 인덱스와 마지막 인덱스를 가져오면 될 것 이다.
방법 1. 배열 사용
package B_1037;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int index = Integer.parseInt(bf.readLine());
int[] arr = new int[index]; //index만큼 배열 생성
StringTokenizer st = new StringTokenizer(bf.readLine());
int result = 0;
if(index == 1) { //입력값이 1개면 제곱
result = Integer.parseInt(st.nextToken());
result *=result;
}else {
int max = 0;
int min = 0;
for(int i = 0; i<index ; i++) {
arr[i]= Integer.parseInt(st.nextToken());
if(i==0) { //최대, 최소 값 구하기
max = arr[i];
min = arr[i];
}else {
if(max<arr[i]) {
max = arr[i];
}else if(min>arr[i]){
min = arr[i];
}
}
}
result = max * min;
}
bw.write(result + "");
bw.flush();
}
}
방법 2. 리스트 사용
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int index = Integer.parseInt(bf.readLine());
List<Integer> list = new ArrayList<Integer>();
StringTokenizer st = new StringTokenizer(bf.readLine());
for(int i =0 ; i<index; i++) {
list.add(Integer.parseInt(st.nextToken())); //값추가
}
list.sort(Comparator.naturalOrder()); //list의 기본 정렬법(오름차순)
bw.write(list.get(0)*list.get(index-1)+""); //첫 번째 인덱스와 마지막 인덱스
bw.flush();
}
}
제출해보니 실행속도는 거의 동일하게 나온다.
코드 길이가 짧은게 list사용한 것. (제일 위)
그래도 가독성과 실수확률 등을 고려하면 리스트를 사용하는게 확실히 정신건강에 이롭다.
'백준 문제풀이' 카테고리의 다른 글
[백준] 2775번 (0) | 2024.03.31 |
---|---|
[백준] 1152번 (0) | 2024.03.30 |
[백준] 2231번 풀이 (0) | 2024.03.12 |
[백준] 1032번 문제풀이 (0) | 2024.02.20 |
[백준] 1920번 문제풀이 (0) | 2024.02.10 |