본문 바로가기
언어/JAVA

알고리즘 1

by step 1 2021. 5. 30.
반응형

나열된 수에서 최솟값과 최댓값 구하기

 

문제 정의

  • 여러 개의 수가 배열에 있을 때 그 중 가장 큰 값과 가장 작은 값을 찾는다.
  • 배열의 몇 번째에 있는지 순서를 찾는다.
  • 반복문을 한번만 사용하여 문제를 해결한다.
  • 수의 예: [10, 20, 33.....]

 

해결방법

배열에 있는 수 중 맨 처음에 있는 값을 max와 min으로 가정하고, 배열의 마지막 숫자까지 비교하면서 더 큰수나 더 작은수가 나올 때 max와 min의 값을 바꾸도록 한다.

 

어떻게 메모리를 활용하는지가 중요

 

package algorism.ch01;

public class MinMaxProblem {

	public static void main(String[] args) {
		
		int[] numbers = {10, 55, 23, 2, 79, 101, 16, 82, 30, 45};
		
		int min = numbers[0];
		int max = numbers[0];
		
		int minPos = 0;
		int maxPos = 0;
		
		for (int i = 1; i < numbers.length; i++) {
			
			if (min > numbers[i]) {
				min = numbers[i];
				minPos = i + 1;
			}
			
			if (max < numbers[i]) {
				max = numbers[i];
				maxPos = i + 1;
			}
			
		}
		
		System.out.println("가장 큰 값은 " + max + " 이고, 위치는 " + maxPos + " 번째 입니다.");
		System.out.println("가장 작은 값은 " + min + " 이고, 위치는 " + minPos + " 번째 입니다.");
	}
}

반응형

'언어 > JAVA' 카테고리의 다른 글

알고리즘 3  (0) 2021.05.30
알고리즘 2  (0) 2021.05.30
wait() / notify() 메서드를 활용한 동기화 프로그래밍  (0) 2021.05.29
Thread 3 (멀티 스레드 동기화)  (0) 2021.05.29
Thread 2 (여러 메서드)  (0) 2021.05.29