일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 리얼 클래스
- Daily Challenge
- Writing
- Problem Solving
- 사이드
- English
- 월간
- 프로젝트
- 괜찮음
- realclass
- 3줄정리
- 쓰릴오브파이트
- 미드시청
- 만화도
- 스탭퍼
- leetcode
- 30분
- 영어공부
- 매일
- 개발자
- 10분
- 읽기
- 뭐든
- 파비최
- 화상영어
- 영어원서읽기
- 운동
- FIT XR
- 링피트
- 잡생각
- Today
- Total
파비의 매일매일 공부기록
#1-1 The Art of Computer Programming - 기초 알고리즘 본문
약 한 달 전에 구매했던 책을 드디어 펼쳐보았다.
컴퓨터 공학에서 공부할 분야들은 많고 많으나,
그중에서도 기본/기초 컴퓨터 공학 지식에 항상 목말라 있어서 이 책을 골랐고
책 초반을 읽어보니 상당히 흥미롭게 구성되어 있어서
기회가 될 때마다 한 챕터씩 읽고 연습 문제에 대한 내 답을 포스팅하려고 한다.
(연습문제 전문을 그대로 적는 것은 저작권에 연관되어 있을 수 있으니 일부만 쓸 예정, 물론 책에 나와 있는 해답도 적지 않을 예정)
그리고 문제를 보고 내가 설명할 수 없거나 전혀 이해가 안 가는 것들은 과감하게 생략하기로 결정했다.
자격시험이나 평가를 받아야 되는 것이 아니니 굳이 무리해서 할 필요도 없으니.
초등학교 때였었나..
서점에 가면 서바이벌? 같은 책들을 흥미롭게 보곤 했었다.
만화로 구성되어 있는 책이었는데 스토리가 진행되다가 분기가 발생하게 되고
분기별 선택에 대한 page들이 적혀 있어서 그 page로 가면 이야기가 진행되는.
이 책(시리즈)을 읽는 절차에 대해서도 상기에 언급한 책의 형식(순서도 라고도 할 수 있지만)을 따르고 있어서 옛날 생각도 나고 흥미로웠다.
오늘 목표인 1-1. 알고리즘 연습문제에 대한 내 답을 아래와 같이 적어본다.
1. a, b, c, d => b, c, d, a로 배치하는 작업은 왼쪽으로 shift 하는 것으로 볼 수 있다. 단순하게 생각하면 t라는 변수를 하나 주고 t <- a, a <- b, b <- c, c <- d, d <- t의 순서로 수행하면 된다. 그런데 치환 횟수를 최소 하려면 어떻게 해야 할까..?
2. 유클리드 알고리즘에서 m이 n보다 클 수밖에 없는 이유는 이전의 연산에서 n이 나머지였던 r값으로 대입되기에 그렇다. 또한 m은 나눈 수 n의 값이 대입되기 때문에 n은 무조건 r보다 클 수밖에 없어서 결국 m은 n보다 클 수밖에 없다.
3. 자명한 치환을 피하도록 수정할 수 있나? 반드시 필요한 연산들인 거 같은데
4. 6099 / 2166 => 2166 / 1767 => 1767 / 399 => 399 / 171 => 171 / 57 => 0, 마지막 n이었던 57이 최대공약수.
5. 알고리즘의 다섯 조건 : 처음 읽었을 땐 그냥 그렇구나 하고 넘어갔는 데, 문제 풀려고 하니 다시 정리가 필요해서 아래와 같이 정리
- 유한성 : 무한한 횟수로 수행되는 게 아닌, 언젠간 끝나는 성질(종료 조건이 있음)
- 명확성 : 모호함이 없이 명확하게 정의되어야 하는 성질
- 입력 : 0을 포함한 특정 개수의 입력을 갖고 있는 성질
- 출력 : 1을 포함한 특정 개수의 출력을 갖고 있는 성질
- 효과성 : 이론적으로 사람이 종이 & 연필을 사용해서 유한한 시간 안에 정확히 수행할 수 있도록 단순해야 하는 성질. 알고리즘에 쓰이는 값들이 무한 소수이거나 측정 불가한 물리적 선분의 길이라고 하면 이런 연산들은 효과적이지 않음
상기의 다섯 개 조건 중 만족 못하는 세 가지 조건을 찾아보았다.
1. 유한성 : 일단 종료 조건이 없어 보인다. 18번이 종료라고는 하는데 다시 3번으로 간다.
2. 명확성 : 흥미로운가? 아닌가? 등에 대한 주관적인 판단이 있기에 모호함이 존재하므로 명확성이 없다.
3. 출력 : 종료가 없으니 출력도 따로 없는 형태다.
나머지 연습문제들은 난이도가 너무 높아 Pass!
'Study > Algorithm 문제풀이' 카테고리의 다른 글
#1-2-2 The Art of Computer Programming - 기초 알고리즘 (0) | 2021.03.09 |
---|---|
#1-2-1 The Art of Computer Programming - 기초 알고리즘 (0) | 2021.03.08 |
문제풀이 이론 학습 #2-2 (0) | 2021.01.31 |
문제풀이 이론 학습 #2-1 (0) | 2021.01.30 |
책 구매 - The Art of Computer Programming Series (1) | 2021.01.27 |