IT & Tech 용어정리

다들 알고 있지? 알고리즘과 5가지의 조건 말야

컴맹아재 2025. 5. 18. 05:00
반응형

안녕하십니까! 오늘도 IT 용어의 바다에서 허우적대다 겨우 숨 한번 쉬러 온 

50대 컴맹 부산아재, 'it&tech 정보창고'에 인사드립니다! 

요즘 제가 유튜브를 보다 보면 말입니다, 

제가 얼마 전에 '블로그'나 '애드센스 블로그' 같은 걸 검색했더니, 

그 다음부터는 신기하게도 유튜브가 알아서 블로그 관련 영상이나 

애드센스 강의 영상들을 척척 추천해주는 거 아니겠습니까!

이걸 보고 제가 주변에 농담 삼아 그랬습니다. 

"이게 완전 알고리즘이네! 내 마음을 '알고있음',

그래서 니가 좋아하는 걸 딱 보여줌!" 하고 말입니다. (썰렁~)

그런데 웃자고 한 이야기지만, 가만 생각해보니 

이 '알고리즘'이라는 녀석, 정확히 어떤 뜻이고 우리 생활에 어떻게 쓰이는 건지 

제대로 알고 싶다는 궁금증이 확 밀려오더라고요. 

 

마침 청소년용 IT 상식사전을 보고 있는데, 

여기에 알고리즘에는 몇 가지 조건이 있다고 하면서 

'입력', '출력', '명확성', '수행가능성', '유한성' 같은 어려운 말들이 나오지 않겠습니까!

그래서 오늘은 이 '알고리즘'이라는 녀석의 정체를 파헤치고, 

그 까다롭다는 조건들까지 우리 컴맹 아재 눈높이에서 한번 제대로 알아보려고 합니다. 

저처럼 "알고리즘? 그거 그냥 알아서 다 해주는 거 아이가?" 하셨던 분들, 

오늘 저랑 같이 알고리즘의 비밀을 제대로 알아봅시다.

알고리즘, 너 혹시 내 마음도 '알고있니'?

1. 알고리즘, 누구냐? 넌! (feat. 유튜브는 내 취향을 어찌 알았을까?)

먼저, 제가 농담처럼 말했던 "알고리즘 = 알고있음,

그래서 니가 좋아하는 걸 보여줌" 이라는 거, 아주 틀린 말은 아닌 것 같습니다!

특히 유튜브나 넷플릭스 같은 서비스에서 콘텐츠를 추천해주는 방식을 보면 정말 그런 것 같지예?


유튜브 추천, 그것도 알고리즘 맞나요?

네, 맞습니다! 정확히는 **'추천 알고리즘'**이라고 부르는 친구가 열심히 일하고 있는 겁니다.

우리가 어떤 영상을 봤는지(시청 기록), 어떤 검색어를 입력했는지,

'좋아요'는 뭘 눌렀는지 등의 **정보(입력)**를 싹 모아서 분석합니다.

그리고 그걸 바탕으로 아하, 이 사람은 이런 종류의 영상을 좋아하겠구나!" 하고

예측해서 관련된 영상들(출력)을 우리 눈앞에 딱! 보여주는 거죠. 신기방기합니다!


그럼, 알고리즘의 진짜 정의는?

알고리즘은 단순히 '알아서 잘 해주는' 마법 같은 게 아니라,

좀 더 정확하게는 어떤 문제를 해결하거나 특정 목표를 달성하기 위한,

명확하고 순서가 정해진 작업 단계들의 묶음(절차 또는 방법)을 말합니다.


쉬운 비유:

- 요리 레시피

: "맛있는 김치찌개 끓이는 법" 레시피도 알고리즘입니다.

재료 준비부터 넣는 순서, 끓이는 시간까지 단계별로 착착 진행해야 맛있는 김치찌개가 완성되잖아요?


- 길 안내

: "부산역에서 해운대까지 가는 방법"을 알려주는 것도 알고리즘입니다.

지하철을 타고, 몇 번 라인으로 갈아타고, 몇 번 출구로 나가라는 순서대로 따라가야 목적지에 도착하죠.

 

- 가구 조립 설명서

: 복잡한 가구도 설명서의 단계를 하나씩 따라 하면 완성되는 것처럼요!
즉, 알고리즘은 '결과를 만들어내기 위한 체계적인 설명서'라고 생각하시면 쉽습니다.


2. 똑똑한 알고리즘이 되려면? 5가지 필수 조건! (예시로 쉽게 이해하기)

자, 그럼 아무 설명서나 다 훌륭한 알고리즘이 될 수 있을까요? 아닙니다!

좋은 알고리즘, 똑똑한 알고리즘이 되려면 다음 5가지 조건을 만족해야 한다고 합니다.

우리 아재들이 좋아하는 "맛있는 라면 끓이기" 레시피에 비유해서 한번 알아볼까요? 🍜


조건 1: 입력 (Input) - 뭘 넣을 거냐? (재료 준비!)

 

- 설명: 알고리즘이 작업을 시작하기 위해 필요한 최소한의 재료나 정보입니다.

입력이 아예 없을 수도 있고(0개), 여러 개일 수도 있습니다.

- 라면 레시피 예시: 라면 1봉지, 물 550ml, 계란 1개(선택 사항), 파 약간(선택 사항). 이런 것들이 '입력'이 되겠죠?

 

조건 2: 출력 (Output) - 뭐가 나올 거냐? (결과물!)


- 설명: 알고리즘의 모든 단계를 거치고 나면 반드시 하나 이상의 결과물이 나와야 합니다. 아무것도 안 나오면 앙꼬 없는 찐빵 아이겠습니까!
- 라면 레시피 예시: 맛있게 끓여진 '완성된 라면' 한 그릇! 이것이 바로 '출력'입니다.


조건 3: 명확성 (Definiteness) - 애매모호한 건 딱 질색! (각 단계는 분명하게!)


- 설명: 알고리즘의 각 단계는 누가 봐도 이해할 수 있도록 명확하고, 절대 모호해서는 안 됩니다.

"이게 맞나? 저게 맞나?" 헷갈리면 안 된다는 거죠.
- 라면 레시피 예시:
나쁜 예: "물을 적당히 넣고 면을 알아서 익을 때까지 끓인다." (X) 

-> '적당히'가 얼만큼인지, '알아서 익을 때까지'가 몇 분인지 애매하죠?
좋은 예: "물 550ml를 냄비에 넣고 끓인다. 

물이 끓으면 면과 분말스프, 건더기스프를 넣고 4분 30초간 더 끓인다." (O) -> 정확하고 명확합니다!


조건 4: 유한성 (Finiteness) - 끝날 때까지 끝난 게 아니다...가 아니라 끝나야 한다! (언젠가는 종료!)


- 설명: 알고리즘은 정해진 수의 단계를 거친 후에는 반드시 끝나야 합니다.

무한정 계속되면 그건 알고리즘이 아니죠.
- 라면 레시피 예시: 라면 끓이는 과정이 10단계든 20단계든, 언젠가는 "완성!" 하고 끝나야 합니다.

"물을 계속 붓는다"처럼 끝없이 반복되면 라면은커녕 홍수 납니다! 


조건 5: 수행 가능성 (Effectiveness) - 시키는 건 할 수 있는 걸 시켜야제! (실행 가능하게!)


- 설명: 알고리즘의 각 단계는 실제로 실행 가능해야 합니다.

이론적으로만 그럴싸하고 현실적으로 불가능한 지시가 있으면 안 되겠죠.

아주 기본적인 작업들로 이루어져야 합니다.
- 라면 레시피 예시:
나쁜 예: "라면 봉지에서 용의 눈물 한 방울과 유니콘의 뿔 가루를 찾아 넣으시오." (X)

 -> 이건 뭐... 판타지 소설이지 요리가 아니죠!
좋은 예: "라면 봉지를 뜯어 면과 분말스프, 건더기스프를 꺼내시오." (O)

 -> 누구나 할 수 있는 현실적인 지시입니다.


"아하! 알고리즘, 알고 보니 우리 생활 속에 있었네!"

오늘 알고리즘이라는 녀석에 대해 좀 더 깊이 파고들어 보니,

"알고있음"이라는 제 농담이 아주 틀린 말은 아니면서도,

그 뒤에는 이렇게 체계적인 정의와 조건들이 숨어있다는 것을 알게 되었습니다.

유튜브가 제 취향을 '알고' 영상을 '보여주는' 것도 

결국은 제 시청 데이터라는 '입력'을 받아, 복잡하지만 

'명확하고 수행 가능한' 단계를 거쳐, '유한한' 시간 안에 

저에게 맞는 영상 목록이라는 '출력'을 만들어내는 정교한 알고리즘 덕분이었네요!

물론 이 모든 것을 당장 다 이해하고 제가 직접 알고리즘을 만들 수는 없겠지만, 

적어도 "아, 알고리즘이라는 게 대충 저런 거구나!" 하고 감을 잡으니

IT 세상이 조금은 덜 무섭게 느껴집니다. 

오늘도 긴 글 읽어주셔서 감사합니다! 

컴맹 아재의 IT 용어 정복기는 계속됩니다! 

혹시 제가 잘못 이해한 부분이 있거나 더 좋은 설명이 있다면 

언제든 댓글로 가르침 부탁드립니다!

이제까지는 컴맹이어도 내일 부터는 노 컴맹이고 싶은 부산아재였습니다.

반응형