알고리즘은 컴퓨터 프로그램에만 관련된 것은 아니며, 일상적인 사람의 행동 역시 알고리즘으로 표현할 수 있습니다. 즉, 컴퓨터가 문제를 해결하는 방식뿐만 아니라 사람이 문제를 해결하는 방식 역시 알고리즘으로 표현할 수 있습니다. 알고리즘은 '간단하고도 엄밀히 정의된 방식'으로 표현되어야 합니다. 현금 인출기에서 5만 원을 인출하는 경우로 예를 들겠습니다.


 

 

[현금 인출 알고리즘]

1. 카드를 넣는다

2. 비밀번호 4자리를 입력한다

3. 만약 비밀번호가 틀렸다면 카드를 받고 1번부터 다시 시작한다

4. 서비스 항목 중에서 현금 지급을 선택한다

5. 5만 원을 입력한다

6. 현금과 카드, 그리고 명세표를 받는다.

한 번도 현금 인출기를 이용해지 보지 않은 사람에게 5만 원을 찾아오라고 하였을 때 현금 인출 알고리즘을

만들었다고 생각해봅시다. 간단하고 명확하게 현금을 인출하는 과정을 알려 주어야 실수 없이 현금 인출이라는 목적을 완수하고 되돌아올 수 있습니다.

 


 

[통화 알고리즘]

1. B에게 전화를 건다

2. 통화 중이면 전화를 끊고 [1단계로 돌아간다 / 다시 전화를 건다]

3. 전화가 연결되면 B를 찾는다

4. B가 전화를 받으면 장소를 말하고 [6단계로 넘어간다]

5. B가 전화를 받지 않으면 약속 장소를 메모로 남긴다.

6. 전화를 끊는다.

상황은 A가 B에게 약속을 정하기 위해 전화를 거는 것을 알고리즘화하였습니다. B와의 통화 알고리즘에서 첫 번째 단계인 'B에게 전화를 거는 부분'을 살펴보겠습니다. B에게 전화를 거는 방법은 쉽습니다.

전화기를 들고 B에게 바로 번호를 누르면 됩니다. 하지만 컴퓨터는 'B에게 전화를 거는 문장을 알아듣지 못합니다. 따라서 '전화기를 들고', 'B의 전화번호를 누르는' 단순한 문장의 나열로 명령을 내려야 합니다. 어쩌면 '전화기를 드는' 명령 자체도 컴퓨터에게 복잡한 명령일 수도 있습니다. '손을 전화기로 가져가서', '수화기를 잡고', '수화기를 들어 올리는' 여러 개의 문장들로 나누어 명령을 내려야 전화기를 들라는 명령을 이해할 수 있을지 모르며, 이보다도 단순한 명령으로 다시 나누어야 할지도 모릅니다.

 


※ 오늘은 C언어 프로그래밍에서 '일상생활에서 알고리즘 적용'에 대하여 알아보았습니다.

 

이 포스트는 학부에서 제공하는 기본적인 컴퓨터 공학 강의와 책들을 토대로 알기 쉽게 내용을 작성하였습니다. 하지만 계속 더 유익하고 논문 및 전문 서적을 읽어가며 더 추가돼야 할 내용이 있으면 C 언어 프로그래밍 포스트와 콘텐츠들을 계속 고도화하는 방식으로 진행하려고 합니다.

#컴퓨터공학 #C언어 #C언어프로그래밍 #프로그램 #알고리즘 #컴퓨터의문제해결 #프로그래밍언어 #공대공부 #일상생활에서의알고리즘 #알고리즘화

+ Recent posts