본문 바로가기

분류 전체보기115

함수의 본질과 컴퓨팅 사고력 1. 프로그램에서 함수의 중요성 함수는 소프트웨어의 본질이자, 소프트웨어라는 건축을 받치는 벽돌이다. 소프트웨어는 함수의 연속으로 구성되며, 함수가 다시 함수를 호출하는 구조, 즉 재귀적인 구조다. 함수는 정보 처리의 최소 단위다. 소프트웨어의 궁극적인 본질은 무수히 많고 다양한 데이터를 입력받아 일관된 방식으로 계산하거나 처리하고 그 결과를 받아내는 것이다. 따라서 함수를 설계한다는 것 자체가 컴퓨터를 통해 문제를 해결하겠다는 것이다. 결국 프로그래머란 함수를 설계하는 사람이다. 2. 컴퓨팅 사고력과 일반 지능 컴퓨팅 사고력에 관해 오해하지 말아야 할 것은, 컴퓨팅 사고력이 좋다고 해서 반드시 IQ가 높다고 볼 수는 없다는 것이다. 상관관계는 있을 지 모르겠다. 그러나 컴퓨팅 사고력은 순수한 지능적인 .. 2023. 10. 29.
RSA 암호 알고리즘과 정보이론 1. 기초적인 암호화 방법 암호화란 전달하고 싶은 평문을 다른 기호로 변환하는 등의 다양한 조치를 통해 평문의 내용을 숨기는 것을 말한다. 이 과정을 거꾸로 하면 복호화다. 직관적이며 기초적인 암호화 방법에는 전치나 매핑을 사용하는 방법이 있다. 전치란 문자 기호들의 재배열을 말한다. 매핑은 한 기호를 다른 기호로 바꾸는 것을 말한다. 어린 시절 누구나 암호를 만들며 놀아본 기억이 있을 것이다. 나 또한 초등학교 시절, 한글의 원리를 그대로 사용하는 대신 새로운 문자 기호를 만들어 암호를 만든 기억이 있었다. 어떤 친구는 글자만 재배열해 암호를 만들었다. 우리는 암호화의 원리를 몰랐지만 누구나 알 수 있는 직관적인 방법을 이미 알고 있었던 것이다. (물론 모두 복호화에는 실패했다..) 2. 정보 이론에 .. 2023. 10. 29.
비트(bit)와 정보의 실체 1. 컴퓨터의 공학적 실체 컴퓨터의 동작 원리를 비유적으로 표현할 때, 흔히들 "컴퓨터는 0과 1로 소통한다"는 비유를 든다. 물론 "물리적으로는" 틀린 설명이다. 0과 1이란 물리적 실체가 아니라 개념이기 때문이다. 컴퓨터 장치를 뜯어 봤자 0과 1은 없다. 전기들이 배선을 타고 흐를 뿐이다. 그러나 컴퓨터는 수학 이론으로 설계된 장치다. 컴퓨터 과학은 0과 1이라는, 아니 더 정확히 말하면, 두 가지 가능성 중 하나를 선택하는 정보의 최소 단위인 비트(bit)를 처리하는 기계다. 현대 컴퓨터는 단지 그 이론을 전기적으로 구현했을 뿐이다. 따라서 물리적 실체를 떠나 0과 1이라는 관습대로 해석하는 것이 꼭 틀린 것은 아니다. 물론 이 비트(두 가지 가능성)라는 녀석을 0/1이라고 부르든, true/fa.. 2023. 10. 27.
하노이 탑 재귀 문제는 엉뚱하게 해결할 수 있으니 주의해야 한다. 1. 하노이의 탑 하노이의 탑은 알고리즘 과목에서 "재귀"를 공부할 때 단골로 나오는 예제 중 하나다. 너무 자주 나와서 모르는 개발자가 없는 것 같다. 그래서인지, 문제는 사실 꽤 어려운 편에 속하는 데도 불구하고 문제 난이도가 최하로 분류되곤 한다. 문제는 매우 간단하다. 왼쪽의 원판 N개를 3번째 막대기로 하나씩 옮기면 된다. 이때 각 원판은 자신보다 무거운 것이 위에 있으면 안 된다. 하노이의 탑 알고리즘은 구글링을 해서 누구나 쉽게 알 수 있으니, 이 글에서는 내가 이 문제를 풀면서 저질렀던 실수를 작성하고 이에 대해 피드백(반성)을 하려고 한다. 2. 알고리즘은 풀기만 하면 안 된다. 알고리즘 문제들을 가지고 IT기업에서 면접을 보는 이유는 그것을 풀 수 있는가의 여부가 아니라, 그것을 어떻게.. 2023. 10. 26.