[실타래(프로그래밍 편)] 2. 절차적 사고

분류 실타래(프로그래밍 편)


chevron_right

목차


알고리즘이란?

⭐⭐⭐⭐⭐ 초 [6실05-01] … 문제를 해결하기 위한 알고리즘을 다양한 방법으로 표현한다.
알고리즘은 문제를 해결하기 위한 일련의 단계적 절차 또는 방법을 의미합니다. 프로그램의 정의와도 비슷한데요. 잠깐 돌아가서 확인해 봅시다.

실타래(프로그래밍 편) - 1. 프로그래밍이란?

정의는 비슷하더라도, 쓰이는 맥락에서 차이가 있어요. 알고리즘이라는 단어는 그 절차와 방법을 강조하거나, 수학적인 문제 해결법을 뜻하는 데 쓰여요. 프로그램은 컴퓨터에서 직접적으로 실행되고, 그 목적에 초점이 있죠.

알고리즘의 조건

알고리즘은 문제를 명확하고 논리적으로 해결하기 위해서 조건을 만족해야 합니다. 조건은 여러 정의가 있지만, 그 의미는 거의 같습니다. 대표적인 조건들을 알아봅시다.

  • 입력, 출력: 0개 이상의 입력과 1개 이상의 출력이 필요합니다.

  • 유한성: 종료되어야 합니다.

  • 수행 가능성/유효성: 모든 명령이 실행 가능해야 합니다.

  • 명확성: 각 단계가 모호하지 않고 명확해야 합니다.

활동 알고리즘의 조건 중 하나가 빠진다면 어떤 문제가 일어날 수 있을지 생각해 봅시다.

먼저 입력과 출력은 문제를 해결하기 위해서 주어진 상황을 파악하고, 그 결과를 알기 위해서 당연히 필요합니다. 유한성이 없다면, 그 알고리즘이 언제나 문제를 해결할 수 있다고 할 수 없겠죠. 아무리 오래 걸린다고 하더라고 유한성, 즉 언젠가는 문제를 해결할 수 있음이 보장되어야 한다는 거예요.

수행 가능성과 명확성이 없다면, 그 알고리즘이 정확하고 논리적으로 문제를 해결할 수 있다고 할 수 없겠죠. 그리고 알고리즘을 코드로 표현할 때도 곤란할 거예요.

조건들의 이름을 알아둘 필요는 없더라도, 알고리즘은 구체적이고 논리적으로 문제를 해결할 수 있도록 만들어야 한다는 핵심은 기억해둬야 해요.

효율적인 알고리즘이란?

하지만 좋은 알고리즘은 문제를 해결하는 것만으로는 부족해요. 문제를 효율적으로, 그러니까 적은 자원을 사용해서 해결해야 하죠. 알고리즘이 얼마나 많은 자원을 사용하는지를 복잡도라고 부릅니다. 더 복잡한 건 나중에 다루도록 할게요. 효율적인 알고리즘이 일반적으로 좋은 알고리즘이에요.

왜 바로 프로그래밍 안 하나요?

이 교재의 목적은 프로그래밍 언어를 배우는 것도 있지만, 알고리즘을 구성하는 것에 더 초점을 두고 있어요. 컴퓨터적 사고나, 절차적 사고라고도 불려요. 앞으로 절차적 사고라고 부를게요. 이런 절차적 사고를 기른다면, 어떤 프로그래밍 언어를 사용하든 원하는 프로그램을 작성하는 데 도움이 될 거예요.

순서도

순서도는 어떤 일을 처리하는 순서를 화살표와 도형 등으로 나타낸 것을 뜻해요. 간단한 알고리즘을 표현할 수 있는 거죠. 주로 쓰이는 도형만 살펴 보면, 끝이 둥근 사각형은 시작과 끝, 사각형은 처리, 마름모는 조건을 의미해요. 선풍기를 고치는 간단한 예시를 볼까요?

Loading diagram...

이렇게 처음부터 순서대로, 어떻게 일을 처리해야 하는지 나타낼 수 있어요. 먼저 문제를 해결하기 위해 여러 단계로 나누고, 구체적인 명령으로 표현해야 코드를 짤 수 있어요.

활동 순서도를 통해서 일련의 서랍에서 어떤 물건을 찾는 알고리즘을 나타내 봅시다.
1방법 생각하기

먼저 서랍에서 물건을 찾는 가장 기본적인 방법을 생각해 볼까요? 아무래도 순서대로 찾아 보는 방법이 가장 간단하겠죠. 이 방법을 자세히 표현해 봅시다. 먼저 서랍을 연 다음, 무엇을 해야 할까요? 찾는 물건이 있는지 확인해야겠네요. 있다면 거기서 끝내고, 없다면 다음 서랍으로 가서 계속 찾아보면 되겠네요.

2순서도로 나타내기

Loading diagram...

물론 이건 단순한 예시일 뿐이지만, 실제 프로그래밍에서도 이렇게 흐름을 파악하고 그 과정을 코드로 표현합니다. 우리는 먼저 그런 절차적 사고를 익히고 코딩을 시작할 거예요.

확인

정리하기
  • 알고리즘: 문제를 해결하기 위한 일련의 단계적 절차 또는 방법

    • 구체적, 논리적

    • 조건: 입출력, 유한성, 유효성, 명확성

    • 효율적인 알고리즘 → 좋은 알고리즘

  • 순서도: 알고리즘을 화살표와 기호 등으로 나타낸 것


인용하기
BibTeX
@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._절차적_사고.