티스토리 뷰
이틀간 자료 구조에 대한 내용 중 stack과 queue에 대한 개념을 배우고 문제풀이를 진행하였다.
자료구조란, 여러 데이터의 묶음을 저장하고, 사용하는 방법을 정의한 것이다.
Stack
LIFO(Last In First Out) 후입선출의 구조 or FILO(First In Last Out)이다.
즉, 프링글스처럼 가장 나중에 들어간 것이 가장 먼저 나온다.
입력과 출력이 하나의 방향으로 이루어지는 제한적 접근을 가진다.
데이터를 넣는 것은 push, 꺼내는 것은 pop이다. 데이터를 넣고 빼는 것은 하나 씩만 가능하다.
queue
FIFO(First In First Out) 선입선출의 구조 or LILO(Last In Last Out)이다.
즉, 터널처럼 가장 먼저 들어간 것이 가장 먼저 나온다.
두 개의 입출력 방향을 가지고 있다.
데이터를 넣는 것은 enqueue, 꺼내는 것은 dequeue이다.
스택과 마찬가지로 데이터를 넣고 빼는 것은 하나 씩만 가능하다.
컴퓨터 장치 사이에서 데이터를 주고 받을 때, 그 장치들의 속도 차이나 시간 차를 극복하기 위해
임시 기억 장치의 자료구조로 queue를 사용하곤 하는데, 이를 buffer라고 한다.
cpu는 이벤트를 규칙하게규칙 하게 처리하지만, 대부분의 컴퓨터 장치에서는 불규칙하게 이벤트가 처리되기 때문에
buffering(버퍼링)이 발생하게 된다.
스택과 큐의 개념 자체는 크게 어렵지 않았다.
ArrayList로 스택과 큐를 구현하는 것도 쉽게 머릿속으로 그려졌다.
하지만, 이것을 응용하여 문제를 푸는 것은 쉽지 않았다.
브라우저의 뒤로 가기, 앞으로 가기를 구현하는 문제도 있었고 ( 이건 혼자 구조를 이해할 수 있었다. )
큐의 구조를 생각하며 최댓값을 구하는 문제, ( 문제 자체를 잘못 이해하고 있었어서 오래 걸렸다. )
프린터의 작동법을 큐로 나타내는 문제까지 ( 반복문 안에 반복문 안에 반복문을 써야 하는 등 조건이 까다로웠다. )
총 3문제를 풀었다.
그래도 페어 분과 함께여서 많은 도움을 받을 수 있었기에 끝까지 풀어낼 수 있었다.
오늘의 일기
지금까지 만난 모든 페어 분들은 나보다 이해와 습득이 빠른 분들 이였다.
내가 이해와 습득이 느린 건가 싶을 정도로 다들 너무 잘하신다.
나보다 잘하는 사람을 만나면 물론 내가 얻는 이득이 훨씬 많다고 생각한다.
하지만, 얻는 이득과 함께 드는 '내가 잘하고 있는 건가'와 같은 불안감은 계속해서 생겨나는 것 같다.
내일의 나와 오늘의 나를 비교해야 한다는 것은 머리로 인지하고 있지만
계속해서 생겨나는 불안감과 무기력함을 이겨내는 것이 중요한 것 같다.
부정적인 감정들이 나를 갉아먹지 않게 잘 관리하는 것이 말이다.
+ 스택과 큐에 대한 문제들을 풀고 나서 트리와 그래프에 대한 개념을 공부할 시간이 주어졌는데,
여태까지 배우고 써 온 배열과 리스트의 구조와 비슷한 스택이나 큐와는 다르게
새로운 개념을 배우는 느낌이고 더욱 추상적인 구조를 이루고 있어서 정말 어렵다고 느껴졌다.
그래서 걱정이 한가득이다..
정말 고맙게도 이해를 잘하시는 페어 분이 설명을 잘 해주셔서 다행이지만, 그래도 내가 할 수 있는 한
개념을 구체화 시켜서 월요일을 맞이하고 싶다.

'SEB_BE_41' 카테고리의 다른 글
| 09.27 ~ 29 (알고리즘) (2) | 2022.09.29 |
|---|---|
| 09.26 스물 여섯 번째 수업 (tree, graph) (0) | 2022.09.27 |
| 09.20 ~ 21 스물두, 스물세 번째 수업 (재귀) (0) | 2022.09.21 |
| 09.19 스무, 스물한 번째 수업 (섹션1 회고) (1) | 2022.09.19 |
| 09.15 ~ 16 열여덟, 열아홉 번째 수업(람다, 스트림, 스레드) (2) | 2022.09.16 |