
난 수학 진도조차 학창시절에 따라가 본 적이 없다.
하지만 요즘 짜는 내 코드들을 보면 규칙이고 나발이고 주먹구구식일 뿐이다.
원인에 대해서 여러 고민을 해봤는데,
이쪽, 수학과 개발에 대해서 머리에 든 게 없어서가 가장 크지 않을까.
그래서 디스코드서 추천 책들 하나씩 인터넷 검색해보면서 읽어보려 한다. 이 책은 1번째 책이다.
내가 수학을 못한다고 갑자기 수학 교과서를 펼치기엔 시간이 없어서 프로그래밍과 연관지어 설명해줄 책이지 않을까 하는 기대 속에 읽었다.
내가 이해한 대로 적은 책임을 밝힌다.
2진과 10진부터 시작해서 로마자 표기를 설명하면서 큰 수 표기를 어떻게 다룰 것인지 나온다.
이진수로 길게 가는 것보다 십진수가 더 가독성 좋지 않나.
지수 개념에서 0은 10의 자리가 없다는 것을 나타내는데, 0을 그렇다고 생략해서는 안된다.
0은 자리를 확보하는 것이다. 이를 플레이스홀더라고 함.
결국 큰 문제를 작은 문제로 덩어리 나누어 해결하려는 노력을 로마, 이집트 등의 표기법에서 알 수 있다.
케이스를 다룰 때 누락되거나 중복되는 부분이 있어서는 안된다.
이를 어떻게 잘 true, false로 분기 처리할 수 있을가?
옳은가 옳지 않은가를 판단할 수 있는 문장을 명제라고 한다.
드모르간의 법칙 : A가 아니다 또는 B가 아니다는 A명서 B가 아닌 것과 같다.
카르노 맵을 사용해서 색깔 램프를 켤 지 여부를 계산하는 부분이 어렵고 흥미로웠음.
if문으로 장황하게 나는 표현했는데 정답은 그냥 얘 키고, 얘는 A일때만 꺼줘~ 였다.
https://m.blog.naver.com/leeyunghuk1/220958708825
복잡한 규칙이 있다(현실) -> 변형해서 단순화 한다.(논리)
-> 단순화 한 논리식을 단순한 규칙으로 사용한다(현실)
현실에서 어려우면 논리의 세계로 들고 가서 이리저리 정리해서 다시 현실에 적용하는 것이다.
if는 성립과 미성립 세계 2개로 나뉘는 것이다.
나눗셈은 그룹 나누기와 같다. 나머지에 따라서 어떤 그룹에 속할 것인지가 정해지기 때문이다.
100일 후는 무슨 요일인지 구하려면 100을 7로 나누었을 때 나머지에 대응하는 요일이 된다.
오늘이 일요일이라면 100일 후는 화요일이 된다.
1, 10, 100, 1000일 후의 요일을 구해보면 규칙을 발견할 수 있다. (월수화토목금이다)
우리는 결국 주기성을 발견해야 하는 것이다.
1의 자리를 구하려면?
1의 자리에 영향을 주는 것은 원래 두 숫자의 1의 자리뿐이다. 예를 들어서 지수 987654321을 주기가 4일때 4로 나눈 나머지를 구하면 된다.
오셀로 통신은 패리티 비트와 같은 원리를 지녔다.
돌을 뒤집었나? 여부는 사전에 홀/짝수개의 돌을 뒤집은 상태로 둘 것인가만 서로 정해 놓으면 보지 않아도 홀짝 여부로 뒤집었나 여부를 알 수 있다.
친구 찾기 문제가 있다. 이 문제는 길에 주목하지 않고 도착한 장소에 주목해야 한다.
홀/짝수번으로 도착할 가능성이 있는 마을로 간다.
(결국 주목해야 할 대상을 잘못잡아서 힘들었나..)
나의 경우 정처기 풀 때 비슷한 문제를 봤던 지라,
이걸 어떻게 1000 넘어서까지 계산을 하나~ 좌절했고,
그래서 더 수학이나 규칙을 배워야겠다고 다짐하게 되었다.
문제를 잘 나누기 위해 적절한 분류 방법을 발견해야 한다.
빈틈없이 타일을 깔려면 체스판처럼 일부를 검게 칠해야 하고,
홀수 마을과 짝수 마을로 나누거나
하나하나 확인보다 번뜩이는 아이디어가 필요하다.
(개수 자체, 길 자체가 중요한 게 아니야)
읽어서 손해볼 책이 아니다.