본문 바로가기
백준 문제풀이

[백준] 1037번 풀이

by Dodledd 2024. 3. 17.

풀이방법에는 크게 두 가지가 있는 것 같다.

배열사용, 리스트 사용

 

배열을 사용하면 최대값과 최소값을 구해야하고

리스트를 사용하면 정렬하여 첫 번째 인덱스와 마지막 인덱스를 가져오면 될 것 이다.

 

 

방법 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