초등학교 때 부터 시작해 고등학교 3학년까지 우리는 10년 넘게 수학을 붙들고 있지만, 이산수학이라는 용어도 그렇고, 이산수학 내용이 우리에게는 많이 낯설 수 밖에 없습니다.
그도 그럴게, 학교에서 배우는 수학은 보통 연속수학(Continous Mathematics)이라고 불리우는, 연속된 대상을 다루는 경우가 많기 때문입니다.
연속된 대상이라는게 뭘까요? 1과 2를 상상해 보세요. 1과 2 사이에는 1.1, 1.2, 1.3 등 소수가 무한히 많습니다. 즉, 연속적입니다. 셀 수가 없습니다.
이와는 반대로 이산수학은 자연수(1, 2, 3 ...), 정수(마이너스, 0, 자연수를 합친 것) 같이 딱딱 나눌 수 있는 대상을 다룹니다. 정수나 자연수 뿐만 아니라 경우의 수나, 논리학 같은 대상이 이런 이산수학에 속한다고 볼 수 있습니다
"코딩을 잘 할려면 수학을 잘 해야 한다"는 말의 진짜 의미
코딩을 잘 하려면 수학을 잘 해야 한다!
이 말은 누구나 한 번쯤 들어본적 있을 정도로 유명한 말입니다.
누구는 맞다, 누구는 아니다 헷갈리는데 과연 맞는 말일까요?
제 생각은, 코딩을 잘 하려면 우리가 중고등학교 때 많은 시간을 들여 배우는 아래의 함수나 미적분 같은 수학은 잘 할 필요는 크지 않습니다. 물론 잘 하면 나쁠건 없겠지만, 필수는 아니라는겁니다.
하지만 좋은 개발자가 되기 위해서는 이산수학은 반드시 잘 해야 합니다.
컴퓨터가 0과 1로 이루어져 있다는 말은 들어보셨을겁니다. 0과 1로만 이루어져 있다 = 이산적 이라는 의미입니다. 즉, 이산수학을 이해하면 할 수록 컴퓨터의 사고방식을 이해한다고 할 수 있습니다.
이런 추상적인 말이 아니여도, 많은 회사들이 입사전 치르는 코딩 테스트에 합격하기 위해서 알아야 할 지식이 바로 이산수학적 지식입니다. 정수론, 그래프 알고리즘(DFS, BFS, 다익스트라, A*), 재귀, 경우의 수 세기 등등... 말하기 시작하면 끝이 없습니다.
이산수학에서 다루는 것들
말씀드렸다 싶이, 이산수학은 정수로 나눌 수 있는 것들이라면 뭐든 다룹니다. 하지만 흔히 이산수학이라는 과목을 배운다면 다루는 주제는 몇 가지 정해져 있습니다.
1. 논리, 증명 같은 중고등학교 때 수학 교과서 피면 가장 먼저 나오는 그것들
- 명제논리
- 술어논리
- 여러가지 증명 방법
2. 정수의 성질
- 정수론
- 수열
3. 경우의 수 (이러이러한 경우는 총 몇 가지?)와 그와 관련된 주제
- 조합론
- 확률
4. 그래프 (고등학교 때 배우는 이차함수 그래프 같은 그래프 아님!)
- 다양한 그래프 종류
- 트리
- 그래프 알고리즘
물론, 학문적 호기심이 아니라면 위의 모든 주제를 철저하게 공부할 필요는 없지만, 정수의 기본적인 성질과 그래프 이론, 기본적인 조합론 이 3가지는 코딩 테스트나 프로그래밍적인 사고방식을 위해 반드시 배울 것을 추천 드립니다!
정리
- 이산수학이 뭐임?
- 딱딱 나눌 수 있는 대상을 다루는 수학입니다. 정수나 논리학, 경우의 수, 그래프(중고등학교 때 배우는 그 그래프 아님)을 주로 다룹니다!
- 개발자 되고 싶은데 그거 배워야 함?
- 이산수학 교과서를 펴서 처음부터 끝까지 읽으실 필요는 없겠지만, 이산수학적 지식은 좋은 개발자가 되기 위해 필수적입니다.
- 그래서 뭐뭐 배우면 됨?
- 필수적인 내용은 기본적인 정수론(수의 성질), 경우의 수 세기(순열, 조합), 그래프 관련 내용 (그래프가 뭔지, 어떤 종류가 있는지, 알고리즘(DFS, BFS, 다익스트라, A*)만 배워도 대부분의 코딩 테스트를 풀 수 있는 이론적 배경은 갖추신겁니다.
'수학 > 🫥 이산수학' 카테고리의 다른 글
수학적 귀납법(Mathematical Induction) 톺아보기 (0) | 2021.06.14 |
---|---|
수학에서 말하는 증명(Proof)이란 뭘까? (0) | 2021.06.11 |
논리학 - 술어논리 (1차논리) (0) | 2021.06.10 |
논리학 - 명제논리 (0차논리) (0) | 2021.03.26 |