[백준] 10818 최소, 최대

차누·2024년 2월 27일
0

문제

N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

출력

첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.

풀이방법

1.값을 입력받아 배열에 저장
2.최소,최대값을 저장할 Min,Max 변수 초기화
3.for문을 돌려 해당하는 값 저장
4.출력

첫번째 시도

Scanner sc = new Scanner(System.in);
		int num = Integer.parseInt(sc.nextLine());
		
		int [] arr_int = new int[num];
		
		for(int i = 0; i < arr_int.length; i++) {
			
			arr_int[i] = sc.nextInt();
		}
        
        int max = 0;
		int min = arr_int[0];
        
        for(int i = 0; i < arr_int.length; i++) {
			
			//최대값
			if(max < arr_int[i]) {
				
				max = arr_int[i];
			}
		}
		
		for(int i = 0; i < arr_int.length; i++) {
			
			//최소값
     			if(min > arr_int[i]) {
				
				min = arr_int[i];
			}
		}
        
        System.out.println(min + " " + max);
        }
  }

코드를 냈더니 90%까지 가서 틀렸다고 나온다.
혹시나 해서 반례를 입력해보았다.
-1 -2 -3 -4 -5
를 입력했더니 최소값은 -5가 나오지만 최대값에서는 0이 나왔다.
Max값도 같이 배열의 첫번째 인덱스 값으로 초기화를 해줘야 한다는걸 알아서
다시 작성하고 제출했더니 맞았다.

두번째 시도

Scanner sc = new Scanner(System.in);
		int num = Integer.parseInt(sc.nextLine());
		
		int [] arr_int = new int[num];
		
		for(int i = 0; i < arr_int.length; i++) {
			
			arr_int[i] = sc.nextInt();
		}
        
        int max = arr_int[0];
		int min = arr_int[0];
        
        for(int i = 0; i < arr_int.length; i++) {
			
			//최대값
			if(max < arr_int[i]) {
				
				max = arr_int[i];
			}
		}
		
		for(int i = 0; i < arr_int.length; i++) {
			
			//최소값
     			if(min > arr_int[i]) {
				
				min = arr_int[i];
			}
		}
        
        System.out.println(min + " " + max);
        }
  }

두번째 풀이방법

1.Math 클래스의 Min(), Max() 함수를 이용하는 방법이다.

코드는 이렇다.

Scanner sc = new Scanner(System.in);
		int num = Integer.parseInt(sc.nextLine());
		
		int [] arr_int = new int[num];
		
		for(int i = 0; i < arr_int.length; i++) {
			
			arr_int[i] = sc.nextInt();
		}
		
		int max = arr_int[0];
		int min = arr_int[0];
		
		for(int i = 0; i < arr_int.length; i++) {
			
			max = Math.max(max, arr_int[i]);
			min = Math.min(min, arr_int[i]);
		}
		
		System.out.println(min + " " + max);
		
	}

}

코드의 가독성이 좋아지고 쉽게 풀 수 있었다.

profile
to be good programmer

0개의 댓글