PDF 다운로드 PDF 다운로드

알고리즘이란 문제를 풀거나 작업을 마치기 위해 설계된 일련의 단계를 말한다. 보통 알고리즘은 프로그램을 짜기 전에, 의사코드로 작성하거나 자신의 언어와 프로그램 언어 1개 이상을 같이 써서 작성한다. 이 글은 자신의 애플리케이션을 만들기 위해서 알고리즘을 어떻게 짜는지에 대해 설명할 것이다.

  1. 어떤 문제를 풀고, 어떤 작업을 수행하고 싶은가? 달성하고자 하는 아이디어를 정했다면 그 과정을 위한 단계를 정해볼 수 있다.
  2. 시작점과 끝점을 찾는 것은 단계를 짜는데 있어 매우 중요하다. 시작점을 정하기 위해서는 다음과 같은 질문에 답을 할 수 있어야 한다. [1]
    • 어떤 데이터/입력값을 쓸 수 있는가?
    • 데이터는 어디에 위치하고 있는가?
    • 해당 문제에 쓸 수 있는 함수는 무엇이 있는가?
    • 쓸 수 있는 데이터 작업시 어떤 규칙을 지켜야 하는가?
    • 데이터 값이 서로 어떻게 연관되어 있는가 ?
  3. 시작점과 마찬가지로 다음 질문을 생각하며 끝점을 찾을 수 있다.:
    • 과정을 통해서 어떤 사실을 배울 수 있는가?
    • 시작부터 끝까지 무엇이 변했는가?
    • 무엇이 추가될 것이며 더 이상 존재하지 않는 것이 무엇인가?
  4. 넓은 범위의 단계부터 시작한다. 일상생활로 예를 들어서, 저녁에 라자냐를 만드는 것이 목표라고 가정해보자. 시작점은 레시피를 만드는 것으로 정했고, 결과물은 저녁 7시까지 라자냐를 다 요리해서 먹을 준비를 마치는 것이다. 단계를 짜보면 다음과 같을 것이다.
    • 온라인으로 레시피를 검색한다.
    • 부엌에 있는 재료를 찾아본다.
    • 사야할 재료 목록을 적는다.
    • 없는 재료를 산다.
    • 집에 돌아간다.
    • 라자냐를 준비한다.
    • 오븐에서 라자냐를 꺼낸다.
  5. 이제 단계별로 정리를 했으니, 어떻게 각 단계를 코딩할 것인지 생각해봐야 한다. 어떤 언어를 사용할 것인가? 사용 가능한 리소스에는 무엇이 있는가? 해당 언어로 각 단계를 마칠 수 있는 가장 효과적인 방법은 무엇인가? 알고리즘에 코드를 적어 넣는다. 각 단계에 코드를 점점 추가하여 전체 과정을 자세하게 작성한다.
    • 위의 라자냐 알고리즘의 예를 들면, 첫번째 단계는 온라인에서 레시피를 검색한다 였다. 그렇지만 검색에는 무엇이 포함되는가? 구체적으로 적어본다. 예를 들면 다음과 같다.
      • 컴퓨터를 켠다.
        • 인터넷에 연결되어 있는지 확인한다. 연결이 안됐다면 인터넷에 연결한다.
      • 웹 브라우저를 연다.
      • 검색어를 입력한다.
      • 레시피 링크를 클릭한다.
      • 레시피가 내가 찾고 있는 것인지 확인한다.
        • 채식이 아닌 레시피는 필터에서 제외한다.
        • 레시피가 최소한 5인분을 기준으로 하고 있는지 확인한다.
      • 자신에게 맞는 레시피를 찾을 때까지 위 과정을 반복한다.
    • 개발하는 프로그램 시스템의 성능과 같이, 자신에게 맞는 리소스를 고려한다. 라자냐의 경우, 라자냐를 만드는 사람은 인터넷을 검색하고 오븐을 사용하는 방법 등을 안다고 가정했다.
  6. 알고리즘은 구체적으로 수행하기 위해 설계된 것이며, 이 알고리즘으로 프로그램 작성을 시작할 수 있다. 다음과 같은 질문을 자문해보면서 필요한 것을 확인한다: [2]
    • 알고리즘이 문제를 해결하거나 해당 작업을 잘 수행하는가?
    • 명확하게 정의된 입력값과 결과값이 있는가?
    • 맨 마지막 결과가 더 일반적거나 구체적으로 다듬어져야 하는가?
    • 단계 중에 더 간단하게 다듬어질 것이 있는가?
    • 해당 알고리즘으로 정확한 결과가 나오는 것이 보장되는가?
    광고


  • 기존의 알고리즘을 확인하여 자신의 알고리즘을 작성할 때 아이디어를 얻는다.
  • 빠른 계산 반복문을 사용한다.
  • 코딩을 할 때는 효율에 집중한다.
  • 종료하는 것을 잊지 않는다. 안 그러면 코딩이 제대로 되지 않을 것이다.
광고

이 위키하우에 대하여

이 문서는 9,316 번 조회 되었습니다.

이 글이 도움이 되었나요?

광고