컴퓨터공학 아주 살짝 맛보기
게시글 주소: https://ui.orbi.kr/00066355671
필자는 현재 화공생명공학을 전공중이지만
전적대학에서 유사컴공을 전공한 전적이 있음
4학년까지 다녔지만 어차피 자퇴할 생각을 가지고 있었어서
아주 심화된 내용까지 공부하지는 않았지만
대충 큰 흐름은 안다고 생각함!
컴퓨터공학을 이루는 분야는 정말 많지만
자료구조와 알고리즘은 이들 중 가장 핵심적인 분야로
이걸 안가르치는 컴퓨터공학과는 세상에 존재하지 않음
자료구조는 쉽게 설명하자면
컴퓨터는 주어진 프로그램의 절차에 따라 데이터를 처리하는 장치인데
이 데이터들을 효율적으로 처리할 수 있도록 어떤 틀에 맞춰 규칙에 따라 행동하도록 설계하는데
이 데이터들의 틀과 규칙이 자료구조라고 보면 됨
예를 들어서
음식점 입장대기 프로그램이 있다고 하자.
여기서 다루는 데이터는 예약 손님들의 정보인데
먼저 예약한 손님이 가장 먼저 줄을 빠져나가 입장 알림을 받아야하는 상황임
즉, 선입선출(First in First out)의 특성을 갖는 자료구조를 이용해야하는데 대표적으로 Queue를 이용할 수 있음.
Queue 자료구조는 데이터를 순서대로 저장하는데, 데이터를 뽑아내는 연산을 수행하면 가장 먼저 저장된 데이터가 반환되도록 설계된 자료구조라서 이 상황에 딱 맞음.
(참고로 이 큐라는게 롤 대기 큐할 때 그 큐랑 같은 말임)
이게 메인은 아니고 이번 글에서는 알고리즘에 대해 혀끝으로 아주 살짝 맛볼 것임
알고리즘은 '어떤 일을 처리해가는 절차' 라고 생각하면 됨
예를 들어 라면을 끓이는 알고리즘이라고 하면
1. 냄비에 물을 550ml 넣는다
2. 스프와 후레이크를 넣고 끓을 때까지 가열한다.
3. 면을 넣고 약 3분간 휘저으며 풀어준다
이렇게 적을 수 있음
한 반에 30명의 학생이 있는데, 키 오름차순으로 줄 세우는 알고리즘이라고 하면 여러 방법이 있겠지만 이렇게 시도해볼 수 있을 것임.
1. 줄서있지 않은 학생 중 한 명을 뽑는다.
2. 이 학생을 줄의 맨 앞학생부터 비교하여 비교대상 학생의 키가 더 작으면 계속 진행, 비교대상 학생의 키가 더 크다면 그 학생 앞에 끼워넣는다.
3. 1로 돌아가 줄서있지 않은 학생이 0명이 될 때까지 반복한다
이렇게 시도해볼 수 있음.
뭔가 비효율적인것 같고 대충 눈대중으로 끼워넣으면 안되나싶을 수 있는데
컴퓨터공학에서 알고리즘은 주어진 일을 예외없이 명확하게 처리할 수 있는게 중요하고
컴퓨터에겐 "대충 눈대중" 이런 개념이 없음.
서론이 길었는데
오늘 다뤄볼 내용은 이분탐색 (binary search) 라는 알고리즘인데, 간단하면서도 매우 효율적인 알고리즘이라
알고리즘이 왜 필요한지, 알고리즘 성능은 어떻게 측정할 수 있는지 설명하기 딱 좋아서 택해봄.
이분탐색은 대소비교가 가능한 원소들(주로 숫자)이
오름차순(또는 내림차순)으로 정렬된 리스트형 자료구조에서 찾고자 하는 원소의 위치를 빠르게 찾아내는 알고리즘임
(리스트 자료구조는 그냥 일렬로 자료를 이어붙인 단순한 자료구조임)
작동방식은 다음과 같음.
1️⃣ 주어진 리스트의 중앙에 위치한 원소a 를 뽑아낸다.
2️⃣ 이 원소가 찾고자 하는 원소인지 비교해본다.
3️⃣ a가 바로 그 찾고자 하는 원소였다면 a의 위치를 반환하고 종료.
만약 a가 더 크다면 a 왼쪽에 위치한 절반 크기의 리스트에 대해서 1번부터 다시 수행하고
a가 더 작다면 a 오른쪽에 위치한 절반 크기의 리스트에 대해서 1번부터 다시 수행
예를 들어서
리스트가 다음과 같이 10개의 원소가 나열되어있다고 하자
[-5, -2, 0, 3, 4, 6, 7, 8, 10, 20]
여기서 8이라는 숫자가 몇 번째에 위치하는지 이 알고리즘으로 찾으려고 해보자.
1. 전체 갯수가 10개니 절반으로 나누면 5.
5번째에 위치한 4라는 숫자를 뽑아내자
2. 4랑 8이랑 비교하자
3. 8>4 이므로 4이후의 값들로 구성된 리스트
[6, 7, 8, 10, 20] 이걸 들고 1번으로 복귀
1. 갯수가 5개니 절반으로 나누면 몫은 2.
2번째에 위치한 숫자인 7을 뽑아내자
2. 7이랑 8이랑 비교하자.
3. 8>7 이므로 7 이후의 값들로 구성된 리스트
[8, 10, 20] 을 들고 1번으로 복귀
1. 갯수가 3개니 2로 나누면 몫이 1.
1번째에 위치한 8을 뽑아내자.
2. 8이랑 8을 비교
3. 8=8이므로 이 8이 위치했던 자리를 출력하고 종료
(여기선 복잡해져서 언급 안했지만 실제 코드로 짤 때는 리스트를 분할할때마다 그 위치도 같이 넘어가서 이 단계에서 위치값 정보가 존재함)
이 알고리즘으로 10개 크기를 갖는 리스트에서
단 3번의 비교만으로 8의 위치를 찾아냈음.
8이 만약 한가운데 위치했다면 1번 비교만에 찾아낼 수도 있겠지만, 최악의 상황을 가정했을 때가 성능이라고 볼 수 있지 않겠음?
최악의 상황은 리스트를 n번쪼개서 결국 1개밖에 안남았을 때가 될 것임.
그리고 한 번 쪼갤 때마다 리스트 크기가 1/2배가 되니
리스트의 크기가 N이라고 할 때
대충 다음과 같이 식으로 쓸 수 있고
양변에 N을 나누고 역수를 취하면
n에 대해 정리하면
따라서 이분탐색을 이용하면
크기가 N인 정렬된 데이터에서
어떤 값의 위치를 찾아내는데는 아무리 느려도
log_2 N 회만에 해결이 가능하다는 것
근데 이게 무슨 의미가 있냐고?
만약 이분탐색을 안쓰고
앞에서부터 차례대로 비교하는 방식으로 위치를 찾는다고 해보셈. N 크기의 데이터에 대해서 최악의 경우 N회 모조리 다 비교해야하는데
N = 10억이라면?
아무리 컴퓨터라고 해도 10억회 연산은 '순식간'에 처리되지 않고 초단위로 넘어가게 됨.
반면 이분탐색으로 찾게되면 10억이 대략 2^30정도 되니 최악의 경우라도 단 30번의 비교만에 결과를 찾아냄.
컴퓨터 입장에선 30회 비교연산은 0.0000001초만에 처리가능하니까 어마어마한 차이라고 볼 수 있음
아까 학생들 줄세우는 알고리즘에 대해 얘기했었는데
과정속에 한 학생을 골라 이미 오름차순으로 세워진 줄 앞에서부터 비교해가며 위치 찾아 끼워넣는다고 했잖음?
이 비교 과정에 이분탐색을 적용시킨다면
위에서 언급한 줄세우기 알고리즘 속도도 훨씬 개선 시킬 수 있을 것임.
참고로 줄세우기 알고리즘을 보통 정렬 알고리즘이라고 부르는데, 이거도 종류가 되게 많고 성능도 제각각임.
이상으로 컴퓨터공학과에서 어떤 공부를 하게 될지
아주아주아주아주아주 살짝 맛보기 글을 마침
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
84, 88, 92 / 80, 92 S2 1회 ㄹㅈㄷ로 어렵네요…;;;ㅜㅜ
-
2컷 가능헐까요?
-
15회차.... 수능 전까지 다 풀고 1등급 쟁취각
-
11투스 후기 2
검토O
-
국어(언매)-95점(20 37틀) 수학(미적)-88점(14 28 29틀)...
-
일상이야
-
0회보다 더 어려운거 같은디 등급컷은 더 높네요 ㅠ
-
커리어 로우 11점까지 찍어봄..근데 한국사 할 시간이 너무 아까움
-
어그로 죄송합니다 자꾸 117이 나오는데 답이 105더라구요 한번만 풀어봐주실수 있을까요
-
23수능 확통 2
22.14틀인데 요즘 시행 수능 확통 기준으로 공통 난이도 및 등급컷 어때요?
-
늦은 11덮 후기 16
물리 화학 각각 19번 찍었는데 둘다 맞은거 레전드네요 하 수능때도 이러길
-
공부가너무재밌다 3
학교애서실모졷나치다가졸려서20분자고왔는데다시쌩쌩해져서또실모조질꺼임재밌다
-
ㅠㅠ 또 나만 어렵지…
-
식센모 화이트 3
38~45정도 진동하면 3등급은 나오나요..?
-
학교에서봄 언미영한화1지2 98 89 95 45 45 50 지2 첫 50이라...
-
오학실 4
해모 4-1 96 4-2 88 임정환 패트 45 한지 30문제 영어단어암기. 문학3지문
-
근데 안좋점은 내 자리에거 갑자기 튀어나와서 내가 잡음 x발 쉬는 시간 때 잠깐...
-
매일 못하니까...
-
악명에 비해선 풀만한데? 싶었는데 시계 보니까 10분 순삭됨 ㅋㅋㅋㅋ 심지어 보기...
-
가세요 1
가 왜 주체높임임? 가+시+어요. 인데 상대높임이라고생각했는데
-
ㄹㅈㄷ 공하싫 12
그냥 죽어야지
-
서울대 내신 정시 반영에서 이수 과목 영향 받나요? 3
예를 들어 경제학과를 지원했는데 제 이수 과목이 물1 화1 지1 화2 사문 생윤이면...
-
난이도 좀
-
이명학 모고 풀면 3페이지에서 1개 이상 틀림 ㅜㅜ 어케하면 안틀리나요?ㅠ
-
마스터 대거탈주해서 답변 개 안달리네 ㅋㅋㅋㅋㅋㅋ 옛날에는 올리자마자 칼답달렸는데...
-
+) 시대 단과 라이브 시간표는 언제 나옴?
-
96 96 88
-
4-0 4-1은 걍 준킬러가 너무 말랑말랑하고 킬러몰빵인데 4-2는 준킬러가...
-
조졌다...
-
평백 84 4
부산대 사범대나 홍익대 사범대 ㄱㄴ? 영어 2등급임
-
오늘 푸는 이투스 수학 21번 큐브에 돌려보니까 다른 모고 11번에 냈던거네요 ㅋㅋ
-
수학 실모 0
지금 남은거 스러너 2 4회 꿀모3 23회 인데 낮2에서 높3 목표 실력이면 킬캠...
-
중학도형 어느정도로 쓰이나요?? 이등변삼각형 밑변 위 점에서 나머지 두변에 내린 두...
-
시험종료 몇분전에 구두로 몇분 남았다 말씀하시는 감독관 7
만나신 분 있나요? 이거 금지 돼있나?
-
혜윰에 성에꽃, 창선감의록, 구운몽 나온다는 거 진짜인가요? 5
이거 다 작년 연계 아닌가요..? 뭔가요
-
국어 순서 0
문학 30분 컷 해야하는데요.. 현대소설이 어렵게 나오면 10분 이상도 잡아먹고...
-
정돈된 생활이 ㄹㅇ 중요함 (잘 씻기, 책상정리 같은 자질구레한거 포함) 자료...
-
모고때 한국사 다 풀고 안 자고 그 시험지에 정법 개념 끄적이면서 복기하는데...
-
28학년도부턴 내신 안 좋은 장수생들 의치한 못가지않음? 2
그때부턴 정시에서도 내신 본다카던데
-
88 22 28 30틀 30번 마지막에 함수 바뀌는거 고려못하고 틀림
-
시발점부터 햇다고 가정하면 시발점 다음에 바로 뉴런하기 좀 어렵지 않나… 싶어서요!...
-
사문 기출문제집 ㅊㅊ(자이 ㄷ 마더텅 ㄷ 사만다) 18
자이 ㄷ 마더텅 ㄷ 사만다 해설 퀄 뭐가젤 좋? 근데자이랑마더텅은...
-
어 그래 고등학교는 어떻게 다니려고
-
아무느낌도 안드네요,,,지금도 37.9인데 그냥 몸이 중간중간 더워지는거 빼곤 뭘...
-
ㅠㅠ 또 나만 어렵지..
-
시간 되는데로 읽어보고 싶다 마침 5달 조금 더 된 따끈따끈한 책이라...
-
가채점표 없으면 2
이번에 독재나 다른 학원 안가고 독학하는중인데 가채점표 그냥 다운받아서 프린트...
-
사문 자연현상 2
코로나, 감기 같은 바이러스가 전국적으로 유행 이거 자연현상인가요 ?-?
-
살말 고민중이라 오르비에서 후기 보고 있는데 24년 후기글에 제3 인간형 이런 작품...
컴공가면 캘투사슬쐐기 잘 맞출 수 있나요
20렙까지 어둠 30스택 못찍을 수는 있습니다
우웩.ㅡ
시간복잡도로그n
FILO 스택