티스토리 뷰

개발/Today I Learned

TIL 23-04-04

Ikhyeon IT 2023. 4. 4. 19:39

#stack과 Queue / Array와 Linked List의 차이점

 

stack은 후입선출 (Last in first out) -> java에서는 push, pop으로 값을 꺼내거나 넣을 수 있다.

Queue는 선입선출 (first in first out)  ->offer, poll을 이용해서 값을 꺼내거나 넣을 수 있다.

 

Array는 크기 변경 할 수없다. 배열에 원소 추가시 새로운 배열을 생성하여 데이터 복사를 진행한다, 다차원 배열이 가능하다

ArrayList는 크기가 변경 가능하지만 수정/삭제시 O(n)의 시간복잡도가 소요된다. 인덱스 조회시 순차적으로 존재하기에 O(1)의 시간복잡도가 소요된다.

LinkedList는 각 원소에 노드를 가지고 있고 노드안에 다음 노드 주소를 가지고 있다.

이를 통해 수정/삭제시 O(1)의 시간복잡도가 소요되지만 원하는 인덱스 조회시 링크를 타고 가야함으로 O(n)의 시간복잡도가 소요된다.

 

#절차지향/ 객체지향이란 무엇이고 차이점은 무엇인가?

절차 지향 프로그래밍 (Procedure Programming)

Top-Down 방식으로 접근하며 순차적인 처리가 중요시 되어 프로그램이 전체적으로 연결되도록 만드는 프로그래밍 기법이다. 대표적인 절차지향 언어는 C언어가 있다. 함수로 부터 데이터를 받아서 기능을 구현하는 방식으로 진행된다. 절차적 프로그래밍 이라는 말이 더 정확하다. 코드의 가독성이 좋고, 실행속도가 빠르다는 장점이 있지만, 유지보수 및 디버깅이 어렵다.

 

객체지향 프로그래밍 (Object Oriented Programming)

Bottom-Up 방식으로 접근하며, 데이터와 절차를 하나의 덩어리(Object)로 묶어서 처리한다. 모듈화 및 캡슐화로 유지보수에 용이하며, 코드의 재사용성이 높다. 처리속도가 상대적으로 느리고, 많은 양의 메모리를 사용한다는 단점이 있다. 

'개발 > Today I Learned' 카테고리의 다른 글

TIL 23-04-06  (0) 2023.04.06
TIL 23-04-05  (0) 2023.04.05
TIL 23-04-03  (0) 2023.04.04
TIL 23-03-31  (0) 2023.03.31
TIL 23-03-30  (0) 2023.03.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함