코딩테스트

[백준 / 브론즈1] 1037 : 약수 (JAVA)

lyndaa 2023. 2. 15. 00:14

문제


풀이방법

  • 입력으로 들어오는 값 중 최소값과 최대값을 구하여 곱하면 N을 구할 수 있음
  • 서로 다른 입력방법(Scanner와 BufferedReader)에 따라 다르게 풀이 가능
    - Scanner
Scanner in = new Scanner(System.in);

        - BufferedReader (입력의 경우 시간 더 빠름, 입력 데이터가 많을수록 더 차이남)

BufferedReader 는 문자열을 한 줄로 읽기 때문에 입력된 숫자 구분을 위해 공백을 기준으로 문자열을 분리해주어야하므로 StringTokenizer 을 사용해야 한다.


코드

1. Scanner

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;
        while (n-- > 0) {
            int k = in.nextInt();
            if (k < min) {
                min = k;
            }
            if (k > max) {
                max = k;
            }
            
            /*
            min = k < min ? k : min;
            max = k > max ? k : max;
            */
            
        }
        System.out.println(min * max);

    }
}

2. BufferedReader

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
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 max = Integer.MIN_VALUE;
		int min = Integer.MAX_VALUE;
		
		StringTokenizer st = new StringTokenizer(br.readLine()," ");
        
		while(n-- > 0) {
			int k = Integer.parseInt(st.nextToken());
			max = k > max ? k : max;
			min = k < min ? k : min;
		}
		System.out.println(max * min);
	}
 
}