배열과 자료구조

mangojang·2023년 1월 5일

✍️ 면접에서 자료구조에 관한 질문을 받았었는데, 잘 대답하지 못하였다. 배열 참 많이 쓰는데, 이 배열로 자료구조를 표현할 수 있다고 한다. 자료구조를 왜 알아야 하는지, 그리고 배열로 자료구조를 어떻게 표현 하는지에 대해 정리 하였다.

자료구조 란?

  • 여러 데이터들의 묶음을 저장하고, 사용 하는 방법을 정의 한 것

출처 - https://velog.io/@j_jhwww/TIL자료구조Data-Structure-스택큐그래프트리

자료구조를 알아야 하는 이유

  • 데이터를 체계적으로 저장 하고, 효율적으로 활용 하기 위해
  • 데이터를 정리하고 활용하여 문제를 빠르고 정확하게 해결하기 위함이다

배열로 큐(queue) 만들기

큐(queue)

  • 순서가 있는 컬렉션을 저장하는데 사용
  • 먼저 집어 놓은 요소가 먼저 나옴 = 선입선출(First-In-First-Out, FIFO)

출처 - https://ko.wikipedia.org/wiki/큐(자료구조)

큐에서 사용하는 배열 내장 메서드

  1. push : 맨 끝에 요소 추가

    let fruits = ['orange', 'apple', 'banana'];
    fruits.push('mango');
    console.log(fruits); // ['orange', 'apple', 'banana','mango'];
  2. shift : 맨 앞에 요소 제거 후, 남은 요소들 앞으로 밀어줌.

    let fruits = ['orange', 'apple', 'banana'];
    fruits.shift();
    console.log(fruits); // ['apple', 'banana'];
  3. unshift : 맨 앞에 요소 추가 후, 남은 요소들을 뒤로 밀음.

    let fruits = ['orange', 'apple', 'banana'];
    fruits.unshift('mango');
    console.log(fruits); // ['mango','orange', 'apple', 'banana'];

성능

  • shift, unshift 는 성능이 느림.
  • 이유 : shift, unshift 동작 순서를 이해하면 쉬움.
  • 동작 순서
    1. 맨 앞에 요소 추가 or 제거
    2. 나머지 요소 인덱스 변경
      ➡️ 배열이 길수록, 시간이 많이 걸리고 메모리 관련 연산이 많아짐.
    3. length 속성 값 갱신

배열로 스택(stack) 만들기

스택(stack)

  • 한쪽 끝에서 요소를 더하거나 뺄 수 있는 구조.
  • 나중에 집어 놓은 요소가 먼저 나옴 = 후입선출(Last-In-First-Out, LIFO)

출처 - https://ko.wikipedia.org/wiki/스택

스택에서 사용하는 배열 내장 메서드

  1. push : 맨 끝에 요소 추가

    let fruits = ['orange', 'apple', 'banana'];
    fruits.push('mango');
    console.log(fruits); // ['orange', 'apple', 'banana','mango'];
  2. pop: 맨 끝 요소 제거

    let fruits = ['orange', 'apple', 'banana'];
    fruits.pop();
    console.log(fruits); // ['orange', 'apple'];

성능

  • push, pop 은 성능이 빠름.
  • 이유 : push, pop 동작 순서를 이해하면 쉬움.
  • 동작 순서
    1. 맨 뒤에 요소 추가 or 제거
    2. length 속성 값 갱신

참고 문헌

profile
한 걸음 한 걸음 계속 걷는 자가 일류다

0개의 댓글