클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

데이터 입출력 구현 13 - Session 55 : 정렬 본문

자격증 공부/정보처리기사 실기

데이터 입출력 구현 13 - Session 55 : 정렬

huenuri 2024. 9. 26. 08:10

어제는 제목만 써놓고 공부는 아직 하지 않았었다. 새벽에 2시간 이진트리에 대해서 공부했고, 이어서 정렬에 대해서 학습해본다.  강의 분량이 40분이나 되어서 무척 많지만 차근차근 공부해볼 것이다.


 

 

세션 55 - 정렬

 

 

 데이터의 개수에 따라 회전 수가 올라간다. 10개라면 10회전을 해주면 된다.

 

 

 

 

맨 앞의 것과 비교해 작은면 그것만 옮기면 된다. 다른 것은 이미 정렬이 완료된 상태니 비교할 필요가 없다. 문제를 풀 때는 회전 수를 반드시 써주어야 한다.


 

 

 

 

 

가장 작은 값이 맨 앞에 온다. 1회전 했을 때는 첫번째로 작은 값이 첫번째 위치에, 2회전 했을 때는 두번째로 작은 값이 두번째 위치에 오게 된다.

 

 

 

 

 

 

 

버블 정렬은 1회전을 하면 가장 큰 값이 뒤로 가게 되고, 두 번째로 큰 값이 마지막에서 두번째 위치에 간다. 두번째로 큰 값이 이 위치에 있기 때문에 마지막 데이터와는 비교하지 않아도 된다. 3회전 할 때는 네번째 데이터와 비교할 필요가 없다.


 

 

 

 

 

 

 

 

 

 

 

 

십단위 숫자끼리 묶는 식으로 정렬한다. 십의 자리가 1인 것부터 차례대로 큐를 거치게 된다.


 

 

 

정렬 실습해보기

 

 

 

 


 

 

 

기출문제 풀어보기

 

 

 

 

 

4번은 잘 모르겠다. 답은 퀵 정렬이었다. 실습을 진행하는데 초점을 맞추느라 내용 암기는 잘 하지 못했다. 퀵 정렬은 키를 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽 서브 파일에 분해시키는 과정을 반복하는 정렬 방식이다.

열심히 공부한 보람이 있었다. 값을 구하는 모든 문제를 하나도 빠짐없이 다 맞추었다. 이제 확실히 이해한 것 같다.

 


 

 

 

학습을 마치고

오늘 새벽에 정말 많은 시간을 들여서 공부했다. 원래 목표는 오늘 새벽에 2장까지 모든 학습을 다 마치는 거였지만 택도 없었다. 이진트리와 정렬이 얼마나 어렵던지.. 어젯밤에 졸려서 일찍 취침하길 정말 잘했다는 생각이 들었다. 졸린 상태로는 도저히 이해할 수 없는 단원이었다.

그래도 모든 내용을 확실하게 알고 넘어갈 수 있어서 정말 기뻤다. 이것이 바로 공부의 매력이다. 하나를 이해하고 깨닫는 순간이 너무나도 기쁘고 황홀하기 때문이다.

 

이제 기출문제를 다시 한번 풀면서 두번째 틀린 문제를 정리해보려고 한다.