inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

인프런 워밍업 클럽 3기 CS - 3주차 미션

찬우 이
0

3주차 학습 내용 - 미션


자료구조 & 알고리즘

 

1. 지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.

1 ) 버블정렬

특징: 인접한 두 요소를 비교해서 큰 값을 뒤로 보내는 방식

시간복잡도: 최선: O(n) / 평균,최악: O(n²)

장점: 구현이 아주 간단하고 직관적임

단점: 성능이 너무 안 좋음, 실전에서 거의 사용 X

 

2 ) 선택정렬

특징: 가장 작은 값을 찾아서 앞으로 하나씩 정렬해가는 방식

시간복잡도: 최선,평균,최악: O(n²)

장점: 구현 쉬움, 자리 바꿈(Swap) 횟수가 적음

단점: 효율성 낮음, 데이터 크기 커지면 성능 ↓

 

3) 삽입정렬

특징: 정렬된 부분에 새 값을 '삽입'하는 방식

시간복잡도: 최선: O(n) / 평균,최악: O(n²)

장점: 거의 정렬된 상태일 땐 빠름, 구현 쉽고 안정 정렬

단점: 역순 정렬일 경우 성능 급감

 

4 ) 병합정렬

특징: 분할 → 정렬 → 병합하는 재귀 방식 (Divide & Conquer)**

시간복잡도: 항상 O(n log n)

장점: 성능 안정적, 정렬 정확도 높음, 안정 정렬

단점: 추가 메모리 공간 필요, 구현 복잡

 

5) 퀵정렬

특징: 피벗 기준으로 좌우 나눠 정렬하는 분할 정복 방식

시간복잡도: 평균: Θ(n log n) / 최악: O(n²)

장점: 평균적으로 가장 빠름, 메모리 추가 거의 없음

단점: 피벗 선택이 안 좋으면 성능 O(n²), 구현 어렵고 불안정

 

2. 메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다. 여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.

 

나는 무조건 타뷸레이션을 사용할 것 같다.

메모리가 부족한 상황이라면 어차피 타뷸레이션이나 메모이제이션이나 메모리를 아껴 써야 하는 조건은 비슷하다고 생각한다.

그렇다면 굳이 어려운 재귀를 써야 하는 메모이제이션보다는, 반복문 기반으로 더 직관적인 타뷸레이션이 훨씬 낫다.

솔직히 말해서 아직 재귀가 너무 어렵다… 그래서 재귀 없이 풀 수 있는 타뷸레이션 쪽을 더 선호하게 되는 것 같다. 😅

 


 

운영체제

 

1. 메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.

 

1 ) 레지스터
2 ) 캐시
4) 보조저장장치

 

2. 사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?

정답: 경계 레지스터 (Boundary Register)

경계 레지스터는 사용자 프로세스가 운영체제의 메모리 영역을 침범하지 못하도록 막아주는 역할을 한다.

CPU 내부에 존재하며, 메모리 관리자가 경계 값을 기준으로 프로세스가 허용된 영역을 벗어나는지 실시간으로 검사한다.

만약 프로세스가 지정된 경계를 넘어서려고 하면, 바로 프로세스를 강제 종료시켜서 시스템 보호를 수행한다.

 

3. 메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?

가변 분할 방식

 

고정 분할 방식

  

4. CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?

정답: 스레싱

멀티프로그래밍 수준을 높여서 CPU 사용률을 끌어올리려 했는데, 오히려 프로세스들이 메모리를 서로 차지하려고 계속 페이지 교체(스왑)만 일어나게 된다.

결국 CPU는 계속 대기만 하게 되고 실제 작업은 거의 하지 못하는 상태가 된다.

이런 상황을 스레싱(thrashing)이라고 부른다.

 

 

5. HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요?

이유를 함께 적어주세요.

조명처럼 켜두거나 그냥 전시용 벽돌로 둘 거라면 없어도 상관없다.

하지만 컴퓨터를 제대로 사용하려면 반드시 필요하다.
운영체제(OS), 프로그램, 각종 파일들이 저장되는 공간이 바로 HDD나 SSD이기 때문이다.

이 저장장치가 없다면 운영체제를 로딩할 수 없고, 프로그램도 실행할 수 없다.

결국 컴퓨터는 켜질 수는 있지만 아무것도 하지 못하는 상태가 된다.

 

6. 파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?

파일을 삭제해도 실제 데이터는 바로 없어지지 않기 때문

파일 시스템은 빈 저장 공간을 관리하기 위해 free block list를 사용한다. 이 리스트는 사용 가능한 블록들을 모아놓은 일종의 기록표다.

파일을 삭제하면 파일 시스템은 파일의 데이터 전체를 지우지 않고, 파일의 헤더 정보(위치 정보)만 지운다. 그리고 그 파일이 있던 위치를 free block list에 추가한다.

결과적으로 사용자 입장에서는 파일이 사라진 것처럼 보이지만, 실제로는 하드디스크 어딘가에 데이터가 남아 있는 상태다.

알고리즘 · 자료구조 자료구조 알고리즘 운영체제 미션 인프런워밍업클럽 CS

답변 0