알고리즘의 대한 공부
알고리즘 (Algorithm)
간단히 말해 문제를 해결하기 위한 과정. 혹은 명확하게 정의되고 순서가 있는 유한한 갯수의 규칙으로 이루어진 집합이라 한다.
많은 사람들이 코딩테스트 == 알고리즘이라고 하지만, 이는 반만 맞는 말이라고 생각한다..
결국 코딩테스트도 문제를 해결하는 법을 아는지 테스트하는 일련의 과정일 뿐이고, 알고리즘이라는 카테고리에 소속되어 있는 것.
알고리즘을 처음 접하는 나같은 사람들이 개념정리를 하고 갔으면 하는 생각으로 글을 써보겠다.
비전공자 입장에서 알고리즘은 정말 알 수 없는 미지의 세계 그 자체다..
어렴풋이 듣기로 알고리즘이 문제푸는방법쯤으로 알고 있던 나랑 아마 비슷할거라고 생각한다.
알고리즘의 프로그래밍으로 문제를 해결하는 방법에는 여러가지가 있지만,
입문자, 신입, 비전공인 나의 입장에서 처음부터 어떻게 배워나가는지 책을 통해, 강의를 통해 공부하는 내용을 정리해보겠다..
먼저 책에서는 간단한 문제를 통한 경험으로 학습한다.
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("세 정수의 최대값을 구하기");
System.out.println("a의 값 : ");
int a = sc.nextInt();
System.out.println("b의 값 : ");
int b = sc.nextInt();
System.out.println("c의 값 : ");
int c = sc.nextInt();
int max = a; //변수 max 에 a 를 대입한다.
if(b > max) //만약 b 값이 max보다 크다면 max 에 b 를 대입하고,
max = b;
if(c > max) //만약 c 값이 max보다 크다면 max 에 c 를 대입한다
max = c;
System.out.println("최대값 : " + max );
}
위 예제는 최대값을 구하는 문제로 변수 max에 최대값이 무엇인지 a, b, c 중 가장 큰 값을 찾아본다.
a 는 4, b는 6, c 는 3이라고 생각해보자,
1. 먼저 변수 max 는 가장 처음의 수 a를 대입한다. (max = 4)
2. 그 다음 if문을 통해 max 와 b를 비교한다. 여기서 기존 max 보다 b가 더 크기때문에 max에 b를 대입한다. (max = 6)
3. 그 다음 max 와 c를 비교한다. 하지만 max 보다 c가 작기때문에 아무일도 일어나지않고 넘어간다.
4. 결국 최대값은 max = b 가 되어 "최대값 : 6" 이 되어 출력된다.
이렇게 최대값, 최소값을 구하거나 하는 등 문제를 두고 이를 해결하는 방법을 공부하는 것이 알고리즘이라고 한다.