알고리즘
-
알고리즘이란? 문제나 과제를 해결하기 위한 처리 절차를 하나하나 구체적인 순서에 따라 표현한 아이디어나 생각을 말한다. 기업에서 알고리즘시험을 보는 이유는 결과물에대한 표현이 도출되기 때문이다. 알고리즘 자체는 일상생활에서도 이미 많이 사용되고있다. 요리의 레시피, 음악의 악보, 가전제품 설명서 등이 있다. 알고리즘은 문자 , 기호 , 일러스트 , 플로우차트 등으로 나타낸다.
-
프로그래밍에서의 알고리즘 알고리즘을 프로그래밍 언어로 기술하면 프로그램이다. 프로그래밍 언어는 컴퓨터에 지시하기 위한 인공언어이다. 알고리즘은 눈에는 보이지 않기 때문에 이것을 전달하기 위해서는 문장이나 일러스트 플로차트로 표현해야 한다. 알고리즘을 컴퓨터에 전달하기 위한 방법 프로그래밍이다. 로봇 청소기가 집안 청소하는 알고리즘 [전원 온] - [직진청소] - [장애물 만나면 방향 전환] - [직진청소] - [배터리가 5%이하면 충전기로] - [청소 구역 확인] -[ 전부 청소했으면 충전기로 복귀] 일반적으로 프로그램은 컴퓨터가 실행해 주기 원하는 처리 절차를 알고리즘으로 표현한 후 이것을 프로그래밍 언어로 기술한 것이다. 사람의 생각 -> 알고리즘 -> 프로그램
좋은 알고리즘이란?
알기 쉽다. - 여러 사람이 작업을 주로 하기 때문에 다른 사람을 이해시키는데 많은 시간이 걸리고 실수 범하기도 쉽다. 설계에서 프로그래밍까지 알고리즘이 어렵거나 복잡하면 나중에 수정하거나 기능을 추가할 때 그것을 만든 본인조자 이해하지 못화는 불상사가 발생할 수 있다. 또한 왜 그런 나쁜 결과가 발생했는지 검증하기가 어렵기 때문에 틀린 부분을 찾기 어렵다.
속도가 빠르다. - 짧은 시간에 올바른 결과를 얻을 수 있는 알고리즘이 좋은 알고리즘이다.
효율적이다. - ‘효율적이다’라는 것은 프로그램을 실행 할때 사용하는 메모리가 작다는 것을 의미한다. 지금은 아니지만 예전에는 메모리의 가격이 상당한 고가였기 때문에 메모리를 적게 사용하는 것이 중요했다.
재이용이 쉽다. - 과거에 작성한 프로그램을 그대로 사용하거나 부분적으로 이용하는 비율이 증가하면 새로운 프로그램을 작성하는 시간이 그만 큰 줄어들게 된다.
왜 알고리즘을 공부해야 하는가…
1 좋은 프로그램을 만들기 위해 2 좋고 나쁜 프로그램을 판단하기 위해 3 프로그래밍을 효율적으로 작성하기 위해 4 프로그래밍 기술을 향상시키기 위해
최근에는 알고리즘을 공부한 적이 없는 사람들도 프로그램을 작성할수 있게 되었다. 실제로 현장에서 일하고 있는 프로그레머 중에서도 알고리즘을 전혀 배워 본적이 없는 사람이 많다. 그렇다면 과연 알고리즘을 공부할 필요가 있을까???
알고리즘의 세가지 기본형…
1 순차구조 처음부터 순서대로만 처리 2 선택구조 조건식으로 판단해서 처리 3 반복구조 조건을 만족하는 동안 반복 처리
-
순차구조 - 실행하기 원하는 처리를 위에서부터 처음부터 순서대로 작성하는것이 순차 구조이다. 알고리즘 중에서도 가장 많이 사용된다.
-
선택구조 - 당면이 다 팔리고 재고 없다면 당면을 산다라는 처리를 할 수 없다. 선택구조란 조건 판단의 처리를 하나로 국한함으로 인해 실행하는 내용을 바꾸는 절차를 말한다. no 즉 당면이 모두 팔렸을 경우 뭔가 다른 대체품 여기서는 떡을 사서 되돌아오는 처리를 추가하여 중단을 막는다. 선택구조를 사용하면 알고리즘이 급격히 변환된다. 선택 구조를 사용하지 않는 알고리즘은 존재 하지 않을 정도로 매우 빈번하게 사용된다.
-
반복구조 - 심부름에는 보상이 있게 마련이다. 심부름 거스름돈으로 붕어빵을 사먹어도 좋다’ 보상이 주어졌다고 가정해 보면, 만약 거스름돈이 1200원보다 적으면 붕어빵을 사먹을 수 없다. 많으면 하나산다. 그래도 돈이 남으면 붕어빵을 더 살수 있다.
속도가 빠르고 효율적인 알고리즘을 만들기 위해서는 이 반복 구조를 얼마나 잘 활용하는지 중요하다. 컴퓨터는 반복처리에 매우 능숙하다. 반복구조는 효율적인 알고리즘의 핵심이다.
알고리즘 기술방법 - 순서도
순서도는 프로그래밍 언어를 사용하지 않고 알고리즘을 기술하는 방법 다른 말로는 플로차트 flowchart 도형 기호를 사용하여 알고리즘을 기술한다. 순서도는 알고리즘을 표현하는 수단 중 하나이다. 자신이 생각하고 있는 알고리즘이 올바른지 처리나 절차에 문제가 없는지를 스스로 눈으로 시각적으로 확인할 수있고 다른 사람에게도 쉽게 전달 할수 있다.
자세한 설명이 없어도 큰 어려움 없이 이해할수 있고 이해 시킬 수 있는 것이 순서도의 장점이다.