본문 바로가기

Do it! 자료구조와 함께 배우는 알고리즘 입문 자바편

알고리즘이란?

package chap01;

// 3개의 정숫값을 입력하고 최댓값을 구하여 출력

import java.util.Scanner;

class Max3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner stdIn = new Scanner(System.in);
		
		System.out.println("세 정수의 최댓값을 구합니다.");
		System.out.print("a의 값: ");	int a = stdIn.nextInt();
		System.out.print("b의 값: ");	int b = stdIn.nextInt();
		System.out.print("c의 값: ");	int c = stdIn.nextInt();
		int max = a;
		if (b > max) max = b;
		if (c > max) max = c;
		
		System.out.println("최댓값은 " + max + "입니다.");
		stdIn.close();
	}

}

 

위 코드는 세 값의 최댓값 구하는 자바 소스다.

 

변수 a, b, c의 최댓값을 max로 구하는 과정은 13 ~ 15행이다.

최댓값 구하는 과정은

우선, max에 a값을 넣고, b값이 max보다 크면 b값을 넣고, c값이 max보다 크면 c값을 넣는 과정이다.

세 문장이 아래로 나란히 있으면 순서대로 실행되며, 이를 순차 과정이라고 한다.

괄호 안에 있는 식을 평가한 결과에 따라 프로그램의 실행 흐름을 변경하는 조건문을 선택 구조라고 한다.

 

그런데, 위 소스와 같이 값을 일일이 입력 받아가면서 테스트하려면 불편한 점이 있다.

아래와 같은 소스로 하면 소스가 더 간결해진다.

 

package chap01;

import java.util.Scanner;

//3개의 정숫값을 입력하고 최댓값을 구하여 출력

class Max3Method {
	// a, b, c의 최댓값으 구하여 반환
	static int max3(int a, int b, int c) {
		int max = a; // 최댓값
		if (b > max)
			max = b;
		if (c > max)
			max = c;

		return max;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner stdIn = new Scanner(System.in);
		System.out.println("세 정수의 최댓값을 구합니다.");
		System.out.print("a의 값: ");
		int a = stdIn.nextInt();
		System.out.print("b의 값: ");
		int b = stdIn.nextInt();
		System.out.print("c의 값: ");
		int c = stdIn.nextInt();
		System.out.println("max3(a,b,c) = " + max3(a, b, c));
		stdIn.close();
	}

}

 

최댓값을 여러 번 반복해서 구할 때에는 메서드로 처리하면 편리하다.

int 형 매개변수 a, b, c에 값을 입력 받아 최댓값 구하고 그것들을 int형 값으로 반환하는 메소드다.

 

알고리즘은

'어떤 문제들을 해결하기 위한 절차로, 명확하게 정의되고 순서가 있는 유한 개의 규칙으로 이뤄진 집합'

이라고 정의된다.