210128 자료구조(Data structure) Linked List(링크드 리스트)(작성중...)
이번 포스팅에서 정리 할 내용은
링크드 리스트(Linked list)
에 대한 개념이다.
우선 링크드 리스트란 연결 리스트라고도 하며, 순차적으로 연결된 공간에 데이터를 나열하는 구조인 배열과 대조적으로
링크드 리스트는 떨어진 곳에 존재하는 데이터들을 화살표로 연결해서 관리하는 구조로 되어있다.
C언어에서는 주요한 데이터 구조이지만, Python에서는 리스트 타입이 링크드 리스트의 기능을 모두 지원한다.
링크드 리스트의 기본 구조와 용어
노드(Node) : 데이터 저장 단위(데이터값, 포인터)로 구성이 되어있다.
포인터(Pointer) : 각 노드 안에서 다음이나 이전의 노드와의 연결 정보를 가지고 있다.
210128 자료구조(Data structure) Stack(스택)
이번 포스팅에서 정리 할 내용은
스택에 대한 개념이다. 스택을 비유로 들면, 바닥에 쌓여있는 책들을 예로 많이 들고 있는데, 그 이유는 스택은 데이터를 제한적으로 접근할 수 있는 구조로 되어있기 때문이다.
여기서 제한적인 접근이란?
한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조로 되어있다는 것을 말한다.
따라서 LIFO(Last-In-First-Out)
의 정책을 가지고 있는 구조이다.
이는 다음에 정리할 큐(queue)의 FIFO(First-In-First-Out)
정책과 상반되는 구조이다.
스택은 어디에서 사용되나?
스택은 대표적으로 우리가 사용하는 컴퓨터 내부의 프로세스 구조의 함수 동작 방식
에서 사용이 된다.
스택 구조는 프로세스 실행 구조의 가장 기본으로, 함수 호출시 프로세스 실행 구조를 스택과 비교해서 이해할 필요가 있다.
210128 자료구조(Data structure) Array(배열)
210128 자료구조(Data structure) & 알고리즘(Algorithm) 개념
오늘 정리할 내용은
자료구조에 대한 개념이다. 기본적인 내용이지만 다른 사람에게 설명하듯이 정리해보려고 한다.
자료구조란 데이터 구조(Data Structure) 라는 용어와 혼재해서 사용된다.
대량의 데이터를 효율적으로 관리할 수 있는 데이터 구조를 의미하는 것으로, 현실에 있는 정보를 프로그래밍으로 바꾸려면 정보에서 데이터로 변환이 필요한데 이때 필요한 것이 자료구조
이다.
개발자에게 자료구조(데이터 구조)란?
개발자는 현실에 있는 데이터를 활용해서 프로그래밍 언어로 개발을 하기 때문에 데이터를 가지고 개발을 할때 자료구조에 대한 지식
은 필수이다. 그리고 데이터 구조에는 다양한 구조들이 있는데, 어떤 데이터 구조
를 사용하느냐에 따라 코드의 효율
이 즉, 프로그램의 퍼포먼스
가 달라진다.
210128 계수정렬(Counting sort)
오늘 공부한 내용
Baekjoon Online Judge의 10989문제의 풀이에서 사용한 계수정렬(Counting sort)에 대해서 정리를 해본다.
계수정렬은 O(N)의 시간복잡도를 갖는다.
계수 정렬을 사용하려면 정렬 대상 배열의 최소값과 최대값을 알고 있어야 한다. 최대값만큼 최대 길이를 설정해서 별도의 리스트를 생성해야 되기 때문이다.
정렬 이름대로 요소의 값에 해당하는 index의 위치에 요소의 갯수만큼 카운트해서 값을 증가시켜 주는 형태를 갖는다.
예를 들어 [1, 5, 1, 5, 6] 이라는 리스트가 있다고 가정하자.
총 5개의 숫자, 최소값은 1, 최대값은 6이라는 전제 조건이 성립하며, 계수정렬을 사용하기 위한 조건을 만족한다.
210128 List와 Tuple 자료형을 이용한 정렬
Baekjoon Online Judge 10989번 수 정렬하기3 문제 (시간/공간 복잡도 조건문제)
백준 저지 10989번 수 정렬하기3 문제 Pseudo code + Python code
[시간 제한] 시간복잡도 고려
Java 8: 3 초
Java 8 (OpenJDK): 3 초
Java 11: 3 초
Kotlin (JVM): 3 초
[메모리 제한] 공간복잡도 고려
Java 8: 512 MB
Java 8 (OpenJDK): 512 MB
Java 11: 512 MB
Kotlin (JVM): 512 MB
1 | n = int(input()) |