실생활 문제 알고리즘 - silsaenghwal munje algolijeum

있습니다. 즉, 컴퓨터가 문제를 해결하는 방식뿐만 아니라 사람이 문제를 해결하는 방식 역시 알고리즘으로 표현할 수 있습니다. 알고리즘은 '간단하고도 엄밀히 정의된 방식'으로 표현되어야 합니다. 현금 인출기에서 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 언어


예를 들어, 서울에서 부산까지 최대한 빨리 가고자 하는 목표가 있습니다. 기차, 버스, 비행기 등 가는 방법은 굉장히 다양하겠죠. 간단히 공항, 기차역, 버스터미널까지 걸리는 시간을 비교해서 교통 수단을 선택할 수 있는 알고리즘을 짜 보았습니다.

지금은 간단하게 짜보았지만, 사실 실제로는 따져야할 것들이 더 많습니다. 기차(KTX, SRT, 새마을호, 무궁화호 등)나 버스(시외버스, 고속버스 등)의 경우 선택지가 많기 때문에, 이 중에서도 선택할 수 있는 조건이 있어야 합니다.

뿐만 아니라, 예외 상황 또한 고려해야 합니다. 명절이나 휴가 시즌 같은 경우 버스를 타면 평소보다 더 오래 걸릴 수 있고, 표가 없는 경우 직통이 아니라 환승으로 중간에서 갈아타야 할 수도 있습니다.

따라서 다양한 선택지를 효율적으로 정교하게 담아내고, 다양하게 발생할 수 있는 예외상황을 잘 처리한다면 효율적이고 탄탄한 알고리즘을 만들 수 있습니다.

2005�⵵�� ������ '�׸����� Ǯ�� ���� C++�� �ڷᱸ��'�� �⺻�� ����ϰ� ������ �ľ��ϰ��� �ϴ� �ʺ��ڸ� �߽����� ����Ͽ���. �� ���� ������ ��ȭ��, ���������� �ڼ��ϰ� ����Ͽ����� ������ �׸��� ���̺��� �����ϰ��� ����Ͽ��� ����� ������ ������ ���� �Ӹ����� �ƴ� ������ C++ �� ������ �� �ֵ��� �����Ͽ���.

�����

알고리즘이란 컴퓨터가 따라 할 수 있도록 문제를 해결하는 절차나 방법을 자세히 설명하는 과정이다. 이를 자세히 설명하면 컴퓨터를 활용한 문제 해결 과정에서 주어진 문제를 해결하는 일련의 방법 또는 절차이며, 문제해결 방법을 순서대로, 절차대로 나열한 것이라고 볼 수 있다.


우리가 배우고 있는 SW 교육의 언플러그드 활동에서 말하는 알고리즘은 컴퓨터가 과제를 해결하기 위한 명령어들의 집합이다. 컴퓨터 명령어의 집합으로 나타나는 알고리즘은 컴퓨터과학의 핵심으로, 컴퓨터가 문제를 어떻게 해결하는지를 나타내는 방법이다. 즉 정보를 어떻게 입력하고 처리하며 데이터를 표시하는지를 나타내는 순서도이다.

2알고리즘은 어떻게 표현할까?

가. 자연어 알고리즘(자연어 표현법, 일상 언어 표현법)

자연어 알고리즘을 쉽게 표현하면 자연어 표현법, 일상 언어 표현법이라고도 한다. 이 방법은 일상적으로 사용하는 말로써 문제를 해결하는 과정을 순서대로 나열하는 것이다. 자연어는 일상적인 언어를 사용하기 때문에 매우 쉽게 표현할 수 있지만 모호하게 표현될 수 있다는 단점이 있다.

1) 자연어 알고리즘의 예

⦁ 양치질하는 알고리즘 ① 칫솔에 치약을 바른다. ② 입속에 칫솔을 넣는다. ③ 양치질을 한다. ④ 입을 헹군다.

나. 순서도로 표현

순서도는 약속된 기호를 사용하여 알고리즘을 표현하는 방법이다. 순서도 표현 방식에서는 일련의 수행과정을 공용의 약속 기호로 표시하고, 화살표로 수행 과정을 순서대로 연결하여 알고리즘을 표현한다. 순서도 방식은 수행 과정을 전체적으로 쉽게 살펴볼 수 있다는 장점이 있지만 복잡한 알고리즘이나 블록형 언어를 표현하기 어렵다는 단점을 가지고 있다.

기호이름역할

실생활 문제 알고리즘 - silsaenghwal munje algolijeum
단말순서도의 시작과 끝
실생활 문제 알고리즘 - silsaenghwal munje algolijeum
흐름선작업 흐름을 명시
실생활 문제 알고리즘 - silsaenghwal munje algolijeum
준비작업 단계 시작 전 준비
(변수 및 초기치 선언 등)
실생활 문제 알고리즘 - silsaenghwal munje algolijeum
처리처리해야 할 작업을 명시
(변수에 계산값 입력 등)
실생활 문제 알고리즘 - silsaenghwal munje algolijeum
입출력일반적인 데이터의 입력 또는 결과의 출력기호이름역할
실생활 문제 알고리즘 - silsaenghwal munje algolijeum
판단조건에 따라 흐름선을 선택
(일반적으로 참, 거짓 구분)
실생활 문제 알고리즘 - silsaenghwal munje algolijeum
수동입력키보드를 통한 입력
실생활 문제 알고리즘 - silsaenghwal munje algolijeum
서브루틴미리 정의해 둔 부프로그램 호출
실생활 문제 알고리즘 - silsaenghwal munje algolijeum
프린트프린터를 이용한 출력
(서류 등의 지면에 출력)
실생활 문제 알고리즘 - silsaenghwal munje algolijeum
화면표시처리결과 또는 메시지를 모니터를 이용하여 출력[그림 01] 순서도 기호

3알고리즘은 컴퓨터에서만 사용할까?

알고리즘은 컴퓨터에서만 사용하고 우리 생활과 큰 관련이 없는 것으로 생각할 수 있다. 하지만 우리가 생활하는 모든 행동은 알고리즘과 관련이 있다고 할 수 있다. 아침에 일어나서 학교에 가기 위해 행동하는 모든 과정, 라면을 끓이는 과정, 버스를 타고 이동하는 모든 과정들 속에 알고리즘이 활용되고 있다. 하지만 너무 빠르게 일어나는 과정 속에서 익숙하고 자연스럽게 여겨지기 때문에 특별한 알고리즘의 절차가 이루어진다고 생각하지 못하는 것이다. 따라서 생활 속에서 알고리즘을 찾아보고 그 절차를 인식함으로써 생활과 알고리즘의 관계를 이해하는 것이 중요하다.