티스토리 뷰
데이터 표현방식
- 순차 자료구조
- 선형 리스트 (Linear/Ordered List)
- 연결 자료구조
- 단순 연결리스트 (Linear/Singly Linked List)
- 원형 연결리스트 (Circular Linked List)
- 이중 연결리스트 (Doubly Linked List)
- 이중 원형 연결리스트 (Doubly Circular Linked List)
=> 그리고 이 자료구조들을 활용한 표현 (다행식, 행렬 등...)
Linked List (연결 리스트)
랜덤접근이 가능한 배열과 다른, 순차적 자료구조.
저장할 값과 다음 노트를 가리키는 포인터로 이뤄진 '노드'로 구성.
Linked List
Doubly Linked List
Circular Linked List
배열 vs 리스트
배열 |
리스트 |
index로 무작위 접근 가능 |
무작위 접근 불가, 순차적 접근 |
리스트보다 메모리 적지만, 데이터 삽입/삭제가 비효율적 (순서를 유지하며 자료를 삽입/삭제시, 최악의 경우 모든 데이터를 옮겨야 한다) |
배열보다 메모리 크지만, 데이터 삽입/삭제가 효율적 |
입력 |
출력 |
첫 줄에 명령어의 개수 N이 주어집니다. (1 ≤ N ≤ 1,000,000) 두 번째 줄부터 N개의 줄에 걸쳐 아래 중 하나의 명령어가 입력됩니다. push x: x를 리스트의 끝에 추가합니다. get x: 리스트의 x번째 원소를 출력합니다. size: 리스트의 크기를 출력합니다. count x: 리스트에 있는 x의 개수를 출력합니다. clear: 리스트를 비웁니다. |
각 명령어에 따라 출력값을 한 줄에 나타냅니다. |
import java.util.*;
public class Test {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
String command = scanner.next();
// push, get, size, count, clear
if (command.charAt(0) == 'p') {
int value = scanner.nextInt();
list.add(value);
}
else if (command.charAt(0) == 'g') {
int idx = scanner.nextInt();
System.out.println(list.get(idx));
}
else if (command.charAt(0) == 's') {
System.out.println(list.size());
}
else if (command.charAt(1) == 'o') {
int target = scanner.nextInt(), count = 0;
for (int j = 0; j < list.size(); j++) {
if (list.get(j) == target) {
count++;
}
}
System.out.println(count);
}
else {
list.clear();
}
}
}
}
'Data Structure' 카테고리의 다른 글
자료구조) Tree - Binary Search Tree, Segment Tree, Binary Indexed Tree (0) | 2019.09.12 |
---|---|
자료구조) Tree - Heap, Priority Queue (힙, 우선순위 큐) (0) | 2019.09.12 |
자료구조) Tree, Binary Tree (트리, 이진트리) (0) | 2019.09.12 |
자료구조) Hash (해시) (0) | 2019.09.12 |
자료구조) Stack, Queue (스택, 큐) (0) | 2019.09.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 웹해킹
- sort
- Java
- Stack
- OneToMany
- FRAGMENT
- mysql
- C
- JPA
- Android Studio
- brute-force
- 리버싱
- Vo
- queue
- 해외여행
- Android
- 우아한 테크코스
- Algorithm
- 프로그래머스
- Data Structure
- graph
- 개발자
- webhacking.kr
- reversing
- javascript
- dfs
- socket
- git
- bfs
- 회고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함