목록CS (4)
Optimal Solution

Stack과 Queue를 학습하기 전에 한 기업의 직무 면접에서 '스택과 큐를 비교해서 설명해주세요' 라는 질문을 받은 적이 있다. 직무 면접에서 자료구조 질문은 거의 '리스트와 셋, 맵을 비교하고 차이점을 중심으로 설명해주세요' 와 같은 질문은 많이 받았지만, 스택과 큐는 너무 쉽고 기초적인 내용이라서 그런가 단 한 번도 질문을 받은 적이 없었다. 그래서인지 순간적으로 LIFO, FIFO 개념에 혼동이 와 멘탈이 흔들렸던 기억이 있다(다행히 답변은 잘 했었음). 스택과 큐는 자료구조를 학습하면서 거의 초반부에 나오는 매우 심플한 자료구조이며, 비슷하면서도 다른 방식으로 동작하기 때문에 함께 묶이곤 한다. 오늘은 스택과 큐에 대해 학습하며 명쾌하게 이해해보도록 하자. 스택 (Stack) 스택은 배열, 리..

Hash와 Hash Table을 학습하기 전에 해시는 분명 2학년 때 자료구조 수업에서 학습했다. 그런데 당시의 나는 해시라는 개념을 명확하게 이해하지 못했던 것 같다. 수업 시간에 해시 ... ? 해시태그 ... 해시 브라운 ... 해쉬스완 ... 이런 생각을 했던 기억이 있는 것을 보면 말이다. 각설하고, 해시는 상당히 강력한 힘을 가지고 있다. 이번 포스트에서는 해시란 무엇인지, 해시 함수란 무엇인지, 해시 테이블이 무엇인지를 학습하며 해시가 가진 강력한 힘을 보다 잘 활용할 수 있는 것이 목표이다. 해시 함수 (Hash function) 해시를 설명하기 전에 해시 함수에 대해 알아야 한다. 왜냐하면 해시는 해시 함수를 통해 만들어진 값이기 때문이다. 해시 함수는 말 그대로 함수이다. 입력이 주어지..

ArrayList와 Vector를 학습하기 전에 https://optimal-solution.tistory.com/entry/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Array%EC%99%80-List [자료구조] Array와 List Array, List를 학습하기 전에 일반적으로 '선형 자료구조'를 떠올리면, Array(배열)와 List(리스트)가 있다. 컴퓨터공학의 자료구조 과목에서 가장 먼저 배우는 자료구조 두 가지가 바로 '배열'과 '링크 optimal-solution.tistory.com 이전 포스트에서 Array와 List를 다루면서, Array와 LinkedList, ArrayList라는 3가지 자료구조를 다뤘다. 그런데, 나는 이전에 객체지향 프로그래밍을 학습하면..

Array, List를 학습하기 전에 일반적으로 '선형 자료구조'를 떠올리면, Array(배열)와 List(리스트)가 있다. 컴퓨터공학의 자료구조 과목에서 가장 먼저 배우는 자료구조 두 가지가 바로 '배열'과 '링크드 리스트' 이기도 한데, Array와 List는 어떻게 다른지 명확하게 이해하는 것은 실제 개발하는 데 있어 중요하다고 생각한다. Java나 Kotlin을 사용해 개발하다 보면 Array, ArrayList나 LinkedList 등 다양한 형태의 Array와 List를 마주하기 때문이다. 우리는 주어진 상황에서 어떤 자료구조를 선택해야 가장 효율적인지 이해하고 사용할 수 있는 개발자가 되어야 한다. Array (배열) Array는 인덱스와, 인덱스에 대응하는 데이터들로 이루어진 자료구조이다...