TIL 220820

남주영·2022년 8월 22일
0

TIL

목록 보기
1/16

오늘 한 일

💡 오늘 한 일 각각에 대한 설명, 그 과정에서의 궁금증 및 느낀 점 등을 정리합니다.

1️⃣ 원티드 프리온보딩 챌린지 마지막 세션 참여

느낀 점

  1. 기록이란 참 중요하구나. 특히 그 기록은 공개적이어야 한다. 어서 빨리 나만의 공개 학습 공간을 만들고 싶다.
  2. 너무 좋은 인사이트와 자료를 많이 공유 받아서 강의 자료를 꼭 다시 꼼꼼히 봐야겠다. 과제도 마무리 지을 것이다.
  3. 멘토님께서는 학습도 중요하지만 결국 실전이 훨씬 중요하다 하셨다. 내가 최근에 했던 생각인 ‘목표를 문제 해결로 두는 개발자가 되자’와 일맥상통하는 것 같다.

2️⃣ Priority Queue 공부 (미완)

나름의 순서를 가지고 백준 문제들을 푸는 중인데, heap 문제들을 풀 차례가 되었다.

그런데 heap의 개념이 가물가물해서 이김에 제대로 개념을 잡고 가고 싶었다.

그래서 학교에서 수강한 자료구조 수업의 priority queue 부분을 다시 들었다.

그리고 해당 내용 정리 및 직접 구현한 코드를 벨로그에 올리려고 정리 중이다.

궁금증

  1. priority queue와 heap은 같은 것인가?

⇒ heap은 바이너리 트리의 일종이다. 이 heap을 이용하여 priority queue를 효과적으로 구현할 수 있는 것이다. 리스트를 연결 리스트, 배열로 구현할 수 있는 것처럼 priority queue 또한 heap이 아닌 다른 방법으로 구현될 수 있다.

  1. heap을 배열로 구현하는 이유

⇒ 일단, heap은 트리보다 리스트로 구현하는 것이 효율적이다.

트리는 주로 연결리스트로 구현하는데, 이 때문에 remove 작업에서 이루어지는 마지막에 원소를 추가하는 일이 어려워지기 때문이다.

이와 같은 이유로 리스트를 통해 구현하는 것이기 때문에 리스트를 연결리스트가 아닌 배열로 구현하는 것이 더욱 적합하다.

또한, heap은 완전 이진 트리이기 때문에 배열을 이용한다고 해서 메모리 낭비도 되지 않으며, 부모-자식 노드 간의 이동을 인덱스를 통해 아주 효율적으로 할 수 있다.

느낀 점

  1. 2년 전에 들은 강의를 듣는데, 그때는 못했던 ‘아, 교수님께서 굉장히 쉽게 알려주시는구나'라는 생각을 할 수 있었다. 당시에는 더 어렵게 느껴졌던 것 같은데 성장을 한 내 자신이 대견하다. (사실 2년이라면 그동안 당연히 성장해야 하지만.. 그래도 잘해왔다고 내 자신에게 긍정 피드백 주면 좋으니까!)
profile
Sharing is Caring. 🪐

0개의 댓글