생능출판사
[컴퓨터과학] 알고리즘의 표현 방법 : 순서도, 의사코드(슈도코드) 본문
★이 글은 《처음 떠나는 컴퓨터과학 산책》을 발췌하여 작성되었습니다.
알고리즘
알고리즘은 문제 해결 방법을 작은 작업 단위로 분해하여 단계별 및 순차적으로 나열한 것입니다. 그리고 그 절차대로 작업이 진행되는 것인데, 이 알고리즘은 무한대로 계속 진행되는 것이 아니라 유한한 시간 안에 끝나야 하며, 분해된 작업 단위도 엄격하게 미리 정해 놓기도 합니다.
앞서 설명한 전국 모의고사 점수와 등급을 계산하는 문제를 다시 살펴봅시다. 평균과 등급을 계산하는 알고리즘을 만들었다고 한다면, 어떤 학생의 정보(학교, 학년, 각 과목 점수 등)가 ‘입력(input)’으로 들어가면, 그 알고리즘은 입력된 데이터를 가지고 정의된 절차에 따라서 계산을 하여, 그 결괏값을 ‘출력(output)’하게 됩니다.
즉, 알고리즘은 ‘입력되는 데이터’와 ‘출력되는 결괏값’에 의하여 정의될 수 있습니다. 입력이 들어왔을 때 그것을 가지고 원하는 출력을 내보낼 수 있도록 하는 과정을 단계별 및 순차적으로 표현한 것이라고 말할 수 있습니다. 혹은 입력 데이터를 출력으로 변환시키기 위한 ‘절차’를 정확하게 기술한 것이라고도 할 수 있습니다.
알고리즘을 생각해 내기 위한 방법
알고리즘(문제 해결 방법)을 생각해 내기 위하여 흔히 사용되는 방법의 하나는 먼저 입력이 무엇인가를 정의하고, 이 입력이 들어갔을 때 어떤 출력이 나와야 하는가를 정의하고, 그 다음에 입력이 들어갔을 때 출력이 나오게 하려면 어떤 절차가 필요한지 고민해 보는 것입니다. 다음 그림과 같이 생각해 보면 됩니다.
알고리즘을 표현하는 방법
알고리즘을 표현하는 가장 기본적인 방법은 ‘의사코드로 나타내기’, ‘순서도로 나타내기’가 있습니다.
● 의사코드(pseudo-code : 슈도코드)로 나타내기:알고리즘을 쉬운 언어로 표현한 것입니다. 의사코드는 각 언어로 표현된 절차 단계들을 명시적으로 구조화시킨 형태입니다. 컴퓨터 프로그램과 유사한 형태로 표현한 것이라고도 할 수 있습니다.
● 순서도(flowchart)로 나타내기:알고리즘을 약속된 도형을 이용하여 시각적으로 표현하는 방법입니다. 순서도에서 사용되는 도형은 시작, 입력, 판단, 출력 등의 미리 약속된 의미가 있습니다.
1부터 100까지의 합을 구하는 알고리즘
1부터 100까지의 합을 구하는 알고리즘을 순서도와 의사코드로 표현해 보면 다음과 같습니다.
간단한 자연어 알고리즘을 만들어 볼까요?
우리가 자주 사용하는 스마트폰에서 앱을 사용하는 알고리즘을 생각해 봅시다.
위와 같이 우리가 하는 행동을 순서대로 나열하면 알고리즘이 됩니다.
여기서 잠깐 생각해야 할 부분이 있습니다.
만약 암호 패턴을 잘못 입력했다면 어떻게 될까요? 2번에서 3번으로 가지 못하는 상황이 발생합니다. 여러분도 암호 패턴을 한번에 정확히 그리지 못했던 경험이 있을 겁니다. 그런 경우에는 위의 알고리즘이 제대로 이루어지지 않습니다. 따라서 좀 더 정확한 알고리즘은 2번을 다음과 같이 수정하는 것이 더 좋을 것입니다.
---> ② 암호 패턴이 일치할 때까지 입력하기
이처럼 모든 경우와 가능성을 생각하고 정확히 작성해야 제대로 된 알고리즘이 됩니다. 그래서 모든 일의 절차를 알고리즘으로 나타내는 것이 쉬운 것 같지만, 컴퓨터가 처리할 수 있는 단계까지 정확하게 알고리즘을 만드는 일은 쉽지 않은 일입니다. 평소에 여러분 주변에 있는 문제들을 알고리즘으로 만들 수 있는지 생각해 보고, 어느 단계까지 정확하게 만들 수 있는지 연습해 보는 습관을 지니면 ‘컴퓨팅 사고’를 개발할 수 있습니다.
《컴퓨터과학 산책》과 함께 알고리즘에 대해 공부해요 : )
[1] 넷플릭스!! 알고리즘이 당신에게 이것을 추천합니다
[2] 알고리즘의 표현 방법
[3] 알고리즘의 구조
'컴퓨터과학' 카테고리의 다른 글
[개발자의 3분 책소개] 처음 떠나는 컴퓨터과학 산책, 유튜브 영상 (0) | 2021.06.08 |
---|---|
[컴퓨터과학] 알고리즘의 구조 : 순차, 반복, 선택 (0) | 2021.05.26 |
[컴퓨터과학] 넷플릭스!! 알고리즘이 당신에게 이것을 추천합니다 (0) | 2021.05.17 |