[실타래(프로그래밍 편)] 2. 절차적 사고
분류 실타래(프로그래밍 편)
chevron_right 목차
알고리즘이란?
정의는 비슷하더라도, 쓰이는 맥락에서 차이가 있어요. 알고리즘이라는 단어는 그 절차와 방법을 강조하거나, 수학적인 문제 해결법을 뜻하는 데 쓰여요. 프로그램은 컴퓨터에서 직접적으로 실행되고, 그 목적에 초점이 있죠.
알고리즘의 조건
알고리즘은 문제를 명확하고 논리적으로 해결하기 위해서 조건을 만족해야 합니다. 조건은 여러 정의가 있지만, 그 의미는 거의 같습니다. 대표적인 조건들을 알아봅시다.
입력, 출력: 0개 이상의 입력과 1개 이상의 출력이 필요합니다.
유한성: 종료되어야 합니다.
수행 가능성/유효성: 모든 명령이 실행 가능해야 합니다.
명확성: 각 단계가 모호하지 않고 명확해야 합니다.
먼저 입력과 출력은 문제를 해결하기 위해서 주어진 상황을 파악하고, 그 결과를 알기 위해서 당연히 필요합니다. 유한성이 없다면, 그 알고리즘이 언제나 문제를 해결할 수 있다고 할 수 없겠죠. 아무리 오래 걸린다고 하더라고 유한성, 즉 언젠가는 문제를 해결할 수 있음이 보장되어야 한다는 거예요.
수행 가능성과 명확성이 없다면, 그 알고리즘이 정확하고 논리적으로 문제를 해결할 수 있다고 할 수 없겠죠. 그리고 알고리즘을 코드로 표현할 때도 곤란할 거예요.
조건들의 이름을 알아둘 필요는 없더라도, 알고리즘은 구체적이고 논리적으로 문제를 해결할 수 있도록 만들어야 한다는 핵심은 기억해둬야 해요.
효율적인 알고리즘이란?
하지만 좋은 알고리즘은 문제를 해결하는 것만으로는 부족해요. 문제를 효율적으로, 그러니까 적은 자원을 사용해서 해결해야 하죠. 알고리즘이 얼마나 많은 자원을 사용하는지를 복잡도라고 부릅니다. 더 복잡한 건 나중에 다루도록 할게요. 효율적인 알고리즘이 일반적으로 좋은 알고리즘이에요.
왜 바로 프로그래밍 안 하나요?
이 교재의 목적은 프로그래밍 언어를 배우는 것도 있지만, 알고리즘을 구성하는 것에 더 초점을 두고 있어요. 컴퓨터적 사고나, 절차적 사고라고도 불려요. 앞으로 절차적 사고라고 부를게요. 이런 절차적 사고를 기른다면, 어떤 프로그래밍 언어를 사용하든 원하는 프로그램을 작성하는 데 도움이 될 거예요.
순서도
순서도는 어떤 일을 처리하는 순서를 화살표와 도형 등으로 나타낸 것을 뜻해요. 간단한 알고리즘을 표현할 수 있는 거죠. 주로 쓰이는 도형만 살펴 보면, 끝이 둥근 사각형은 시작과 끝, 사각형은 처리, 마름모는 조건을 의미해요. 선풍기를 고치는 간단한 예시를 볼까요?
Loading diagram...
먼저 서랍에서 물건을 찾는 가장 기본적인 방법을 생각해 볼까요? 아무래도 순서대로 찾아 보는 방법이 가장 간단하겠죠. 이 방법을 자세히 표현해 봅시다. 먼저 서랍을 연 다음, 무엇을 해야 할까요? 찾는 물건이 있는지 확인해야겠네요. 있다면 거기서 끝내고, 없다면 다음 서랍으로 가서 계속 찾아보면 되겠네요.
2순서도로 나타내기Loading diagram...
확인
알고리즘: 문제를 해결하기 위한 일련의 단계적 절차 또는 방법
구체적, 논리적
조건: 입출력, 유한성, 유효성, 명확성
효율적인 알고리즘 → 좋은 알고리즘
순서도: 알고리즘을 화살표와 기호 등으로 나타낸 것
인용하기
@misc{devngho20252,
author = {Yu, Dongho},
title = {2. 절차적 사고},
howpublished = {\url{https://ngho.dev/posts/2._절차적_사고}},
year = {2025},
month = {jul},
note = {Accessed: 2025-08-01}
}APA 유동호. (2025년 7월 25일). 2. 절차적 사고. devngho 블로그. https://ngho.dev/posts/2._절차적_사고
Chicago 유동호. “2. 절차적 사고.” devngho 블로그, 2025년 7월 25일, https://ngho.dev/posts/2._절차적_사고.
MLA 유동호. “2. 절차적 사고.” devngho 블로그, 2025년 7월 25일, https://ngho.dev/posts/2._절차적_사고.