티스토리 뷰
#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 |