> For the complete documentation index, see [llms.txt](https://jinwon-yoon.gitbook.io/jinonys-blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jinwon-yoon.gitbook.io/jinonys-blog/daily-log/2022.12.16.md).

# 2022.12.16

일일 회고 121일차

## 할일 및 한일&#x20;

* [x] Java 프로젝트 중간 점검&#x20;
* [x] 자료구조 4장(연결 리스트의 확장) 70%&#x20;
* [ ] Java 프로젝트 기능 구현&#x20;

## 경험 및 배움&#x20;

### Java 프로젝트 중간 점검&#x20;

오늘은 자바 프로젝트 중간 점검을 하고, 피드백을 받았다.

어제 패키지 분리, 로직 분리 등의 피드백은 어느 정도 받은 상태라 나머지 피드백만 받았다.

우선 `switch` 문을 작성할 때 나는 습관적으로 `BufferedReader` 를 사용하고, 박싱 과정을 통해 `int` 형으로 변경하여 사용하였다.

하지만 생각해보면 그럴 필요는 전혀 없었고, 오히려 박싱 과정을 통해 객체를 힙 영역에 하나 더 생성하므로 비효율적인 과정이 될 수 있다. 따라서 `String` 타입으로 진행하는 것으로 변경할 예정이다.

또한 현재는 `if` , `else-if` 문이 필요 이상으로 많고, 중복되는 것들이 있어서 가독성이 좋지 않고, 코드가 안쪽으로 깊어져서 보기 좋지 않다. 따라서 이것도 `if` 문에서 조건에 일치 하지 않는 경우를 오히려 먼저 작성하고, 나머지 코드를 밖으로 빼는 형식으로 바꿔보아서 가독성을 높여볼 예정이다.

현재 까지의 기록은 다음과 같다.

{% embed url="<https://github.com/Jinwon-Dev/java-toy-project/commits?author=Jinwon-Dev&since=2022-12-15&until=2022-12-16>" %}

### 자료구조 4장(연결 리스트의 확장) 70%&#x20;

현재 까지는 **원형 연결 리스트, 이중 연결 리스트**에 대해서 추가적으로 학습하였다.

원형 연결 리스트는 생각보다 간단했지만, 이중 연결 리스트는 복잡하고, 이해하기 좀 어려웠다.

우선 노드 사이의 연결이 **양방향**이다 보니, 노드의 추가와 삭제에서 좀 더 복잡하고, 구현하기 쉽지 않았다.

두 연결 리스트의 큰 차이점은 다음과 같다.

{% hint style="info" %}

1. ***원형 연결 리스트는 순환 구조이고, 이중 연결 리스트는 아니다.***
2. ***이중 연결 리스트에서는 마지막 노드의 다음 노드는 첫 번째 노드가 아닌 헤더 노드이다.***
3. ***이중 연결 리스트에서는 헤더 노드의 이전 노드는 마지막 노드이다.***
   {% endhint %}

## 개선 및 목표&#x20;

* 주말은 학교에서 주최하는 청소년 IT Camp의 보조 강사로 참여한다. 남은 시간은 개인 공부에 열중하자.&#x20;
