정보) 컴퓨터공학과 과목 맛보기 - 4. 알고리즘
게시글 주소: https://test.orbi.kr/00066884548
오늘은 '알고리즘' 과목입니다.
컴퓨터과학을 배운다면 빠질 수 없는 바로 그 과목이죠.
백준, 코드포스와 같은 Problem Solving을 하기 위한 기본 지식을 배울 수 있는 과목입니다.
요즘 취직에 필수적인 코딩 테스트를 준비하기 위해서는 이 과목은 열심히 들어야겠죠.
필자가 이 과목을 수강했던 학기는 2020년(2학년) 2학기, 평점은 A+였습니다.
---------------------------------------------------------
알고리즘이란 과연 무엇인가?에 대해서 교수님이 수업 첫날에 보여주신 영상입니다.
알고리즘은 '어떤 문제를 해결하기 위한 절차'를 말합니다.
알고리즘을 많이 알고 있으면
어떤 상황에서 어떤 알고리즘이 좋을지 판단할 수 있고,
더 효율적인 프로그램을 작성할 수 있을 것입니다.
소프트웨어 엔지니어라면 필수적으로 알고 있어야 한다는 뜻이겠죠.
알고리즘은 얼마나 '효율적'인가를 판단하게 되는데요.
이때의 효율이란 Input으로 들어오는 양에 대해 얼마나 빠른 속도로 처리되는 지를 말합니다.
흔히 Big-O라고 하죠.
예를 들어 O(n)인 알고리즘은 Input Size가 2배가 되면 처리 시간도 2배가 되는거고요,
O(n^2)의 알고리즘은 Input Size가 2배가 되면 처리 시간은 2^2=4배가 되는겁니다.
과제로는 위처럼 어떤 알고리즘의 시간 복잡도를 직접 계산해보는걸 했었네요.
그 다음으로는 본격적인 알고리즘에 대해 배우는데요.
정렬에 대한 내용을 배웁니다.
정렬이란 건 말 그대로 여러 데이터들이 모여있을 때, 이를 순서대로 줄 세우는 작업을 말합니다.
Sorting은 알고리즘 수업에서 뗄레야 뗄 수 없는 내용인데요.
워낙 종류가 많기도 하고 시간 복잡도도 전부 달라서
알고리즘에 대해 설명하기 좋은 예시가 되기 때문입니다.
Insertion Sort, Merge Sort, Quick Sort, Count Sort, Radix Sort 등
많은 정렬 알고리즘의 시간 복잡도, 특징, 구현 방법 등에 대해 배웁니다.
이렇게 한 줄로 정리했지만 실제 배우는 내용은 무지 많습니다.
다음으로는 Problem Solving을 공부할 때 빠지지 않는 Dynamic Programming입니다.
이건 어떤 알고리즘 문제를 풀 때의 방법론?이라고 할 수 있는데요.
점화식을 세운다고 생각하시면 됩니다.
슬라이드에 나와있는 예시처럼 피보나치 숫자를 구하기 위해서
이전 단계에서 계산한 결과를 저장해놓은 다음, 그 다음에 나올 숫자를 구하는 거죠.
이를 위해서는 Memoization(이전 단계의 결과를 저장해놓는 것)이 필요합니다.
이 다음은 Dynamic Programming으로 해결 가능한 대표적인 문제에 대해 배웁니다.
LCS, Knapsack 등에 대해 배웠습니다.
그 다음에 나오는 건 Greedy(탐욕) 알고리즘입니다.
이건 각각의 단계에서 가장 좋아보이는 선택만을 하는 알고리즘입니다.
적절한 예는 아니지만 물건을 훔치는(?) 상황인데 가방은 한 개 뿐입니다.
이럴 때 도둑은 비싼 것부터 가방에 차곡차곡 담겠죠.
탐욕 알고리즘은 이와 같이 문제를 해결하는 방식을 말합니다.
하지만 가장 큰 문제점은 바로 항상 최적의 해를 보장해주지는 않는다는 것입니다.
이 이후에는 Greedy 알고리즘으로 해결 가능한 문제들에 대해서도 배웁니다.
혹시 기출 지문 중에 '허프만 부호화' 기억나시나요?
이 허프만 부호화도 탐욕 알고리즘으로 구할 수 있습니다.
Huffman Code 외에도 Fractional Knapsack,
Minimum Spanning Tree를 구하는 Prim's Algorithm, Kruskal's Algorithm 등
여러 Greedy Algorithm에 대해 배웁니다.
이 다음은 그래프에 대해 배웁니다.
그래프는 이산수학 과목을 들으면 배울 수 있는데요.
알고리즘에서 빠질 수가 없는 녀석입니다.
그래프를 돌아보는데(Searching) 쓰이는 알고리즘이 그 유명한 BFS, DFS입니다.
BFS는 처음 시작한 노드에서 같은 거리에 있는 노드를 먼저 탐색한 후, 거리를 점점 늘려가면서 탐색합니다.
DFS는 처음 시작한 노드에서 최대한 많이 들어간 후, 더 들어갈 곳이 없을 때 이전 노드로 돌아와 다시 탐색합니다.
컴퓨터과학을 전공하는 고학년이라면 BFS와 DFS 정도는 안 보고 코딩할 줄 알아야.. 근데 전 까먹음
이렇게 탐색 알고리즘에 대해 배운 이후에는 최단 경로를 구하는 알고리즘을 배웁니다.
최단 경로를 구하는 알고리즘에는 Bellman-Ford, Dijkstra 알고리즘이 있습니다.
마지막으로는 그 유명하고 유명한 P-NP 문제에 대해 배웁니다.
물론 이건 아직까지 해결되지 않은 문제이므로 그냥 어떤 것인지에 대해서만 배웁니다.
유명한 문제이니 상식 좀 쌓는다고 생각하시고 한번씩 들어보셨으면 좋겠습니다.
이 문제를 풀면 $1,000,000 + 엄청난 명예 + 기타 등등을 모두 얻을 수 있습니다
부와 명예를 위해선 컴퓨터공학과에 진학해야
한 학기 동안 이렇게 많은 내용에 대해 배우게 됩니다.
근데 이 과목 특성 상 계속 기억해야 하는 내용이 많아서
주기적인 복습이 필요한 과목입니다.
알고리즘 한번 제대로 공부해놓으면 도움 많이 될 겁니다.
다음에 시간 날 때 또 적어보겠습니다.
제가 적은 글 (클릭하면 연결)
3. 컴퓨터공학과 과목 맛보기 - 2. 시스템프로그래밍(1)
4. 컴퓨터공학과 과목 맛보기 - 2. 시스템프로그래밍(2)
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
25학번으로 2학기부터 휴학 가능한 학교 진학 예정이며 1학기부터 공부 열심히...
-
거의 3달 놀았더니 수학 문제 푸는 감이 사라졌음 기출부터 다시 돌려야지,,
-
ㅈㄱㄴ…
-
SBS까지도 오요안나 캐스터 사건 언급하는 거 보면 찻잔속 태풍은 애초에 지났네요. 1
KBS가 먼저 뉴스로 언급한 상황에서 어떻게 흘러갈까 궁금했는데 SBS까지도 사실상...
-
소셜계정은 비밀번호 자체가 없는거임?
-
고대 합격포기 1
고대 국문과 최초합했는데 의대가 목표라 다시하고싶은데 입학포기하고...
-
어떰? 많이 귀찮나? 취미로서 좋은 거 같음?
-
2학년 때 화2생2하고 3학년 때 고급물리반 수시로 설의감 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ...
-
재수 망한 거 9
주술회전 때문인 것 같음 반박 시 죽임
-
인서울 대학(중경외시이 라인) 정경대학 어느 학과에 재학 중인 학생입니다. 나중에...
-
수특 오류ㅋㅋ 9
sin ACB값이 1보다 큼ㅋㅋ
-
만일 컴퓨터공학과 계열이랑 기계공학과 계열은 나중에 진학 후 문제가 생기는 게...
-
신기하다
-
그러다가 카페를 차리고 부자가 되는 거야
-
아... 2
-
뱃지 :) 4
누가 뻘글 써달라고 하셨는데 신나서 써봐요 나 하냥대랑 의대 뱃지 얻었다! 아...
-
이런 경우가 흔한가...?
-
teemu.com/event
-
25수능 생1 3 지1 1 사탐은 고려x 물1은 베이스x 생1은 3등급 베이스...
-
말랑말랑~
-
12명 모집 / 점공률 50%가 넘는다면 정확하다고 봐도 되나요?
-
몇살까지 살고싶음? 17
건강수명 동일하다고 가정시 저는 개인적으로 몇살까지 살고싶은걸 떠나서...
-
기피 보직(헌급방) 있잖아요 점수 안되면 여기조차도 못들어가는거 맞죠? 애초에 들어가질 못했으니?
-
나 약간 사회성이 없나 12
예전에 친하다 연락 끊긴 사람들 안부 문자나 카톡 몇 번 오는데 그냥 과거의...
-
생각을 해보셈 무려 여자라는 존재가 내 채팅을 보고 답해주는 상호작용이 가능하다고
-
할까 고민인데 전부터 알바구인 보면 항상 공고가 올라와있음.. 거르는게 좋을까여
-
치킨 먹고 싶다 0
물론 어제 먹긴 했음
-
사탐런 뭐할까 1
예비고2정시인데 과1사1할꺼임 지1은 개념기출 한바뀌돌리고 두바퀴째임 시간도좀있고...
-
자러갈게요 3
오르비언들도 굿나잇
-
물회 먹고싶다 6
도다리 물회
-
네?
-
슬프네요,, 2
야식으로 피자를 주문했는데 안 써도 되는 돈을 쓴 것 같아서 슬프네요,, 그래도...
-
제 이름 뜻 맞혀 보실 분 수능장아찌
-
밥사줘어 4
맛잇는거어
-
저는 물화생지 중에는 그냥 물리가 좋았고, 그 다음에 화학이 좋아서 물1화1 하다가...
-
ㄱㄱ
-
제 지출의 대부분을 차지한 망할놈의 씹덕겜을 처음 알게 된 날임뇨
-
잘 산다
-
1,2지망 대학 모두 전추권일때 마지막날 2지망 대학 전화추합-->등록한다고...
-
2월부터 1일 1기출 할 것! 216과 함께하는 기출 분석!
-
딱10분만질문받음 25
그이후엔 물리력 초기화하고 넷플볼거임
-
구의증명 명언 명대사 인상깊은 책 구절 글귀최진영 작가의 소설 구의 증명은 출간...
-
기본이 안되어있는 애들한텐 답하기 너무어려움
-
문자는 항상 어렵다 힝
-
사전투표 선거인명부가 서버에만 있으니까! 논란되는 몇군데. 서너군데만 사전투표...
-
왜 잘정리함?
-
순대렐라 << 얘 오르비에서 요새 비호감이던데 님들 어떻게 생각함?? 나만 그렇게...
-
헝가리 의대생 헝가리 의대를 졸업하고 일본 의사 본시험 인정을 받은 일본인 학생...
PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS!
ㄱㅁ
PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS! PS!
빨리 n log n 찬양해
와 어지럽네
사실 이건 알고리즘 중에서도 극히 일부인..
레드 블랙 트리 구현 때문에 이진 탐색 혐오 조금 생김