본문 바로가기
수학/🫥 이산수학

프로그래머가 되기 위해 알아야 한다고 하는 이산수학이란 무엇일까?

by 개발자 진개미 2021. 3. 26.
반응형

초등학교 때 부터 시작해 고등학교 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*)만 배워도 대부분의 코딩 테스트를 풀 수 있는 이론적 배경은 갖추신겁니다.

 

반응형

댓글