https://www.codetree.ai/missions/6/problems/integer-command-processing-8?&utm_source=clipboard&utm_medium=text
LinkedList<Integer> l = new LinkedList<>(); 형태로 이중연결리스트 사용
addFirst(E) - 맨 앞에 데이터 E를 추가
addLast(E) - 맨 뒤에 데이터 E를 추가
pollFirst() - 맨 앞에 있는 데이터를 반환하면서 리스트에서 삭제
pollLast() - 맨 뒤에 있는 데이터를 반환하며서 리스트에서 삭제
size() - 현재 list에 들어있는 데이터의 수
isEmpty() - 현재 list가 비어있다면 true, 아니라면 false
peekFirst() - list의 맨 앞에 있는 데이터를 반환
peekLast() - list의 맨 뒤에 있는 데이터를 반환합니다.
정수를 저장하는 연결 리스트를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하여보세요. 명령어는 총 8가지입니다.
- push_front A: 정수 A를 연결 리스트의 앞에 넣습니다.
- push_back A: 정수 A를 연결 리스트의 뒤에 넣습니다.
- pop_front: 연결 리스트의 가장 앞에 있는 수를 빼고, 그 수를 출력합니다.
- pop_back: 연결 리스트의 가장 뒤에 있는 수를 빼고, 그 수를 출력합니다.
- size: 연결 리스트에 들어있는 정수의 개수를 출력합니다.
- empty: 연결 리스트가 비어있으면 1을, 아니면 0을 출력합니다.
- front: 연결 리스트의 가장 앞에 있는 정수를 출력합니다.
- back: 연결 리스트의 가장 뒤에 있는 정수를 출력합니다.
입력:
13
push_back 1
push_front 2
push_front 3
pop_front
front
pop_back
back
size
empty
pop_back
push_front 3
empty
back
출력:
3
2
1
2
1
0
2
0
3
풀이
import java.util.LinkedList;
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 변수 선언 및 입력
int n = sc.nextInt();
// 동적 배열 선언
LinkedList<Integer> v = new LinkedList<>();
for(int i = 0; i < n; i++) {
String command = sc.next();
if(command.equals("push_back")) {
int num = sc.nextInt();
v.addLast(num);
}
if(command.equals("push_front")) {
int num = sc.nextInt();
v.addFirst(num);
}
else if(command.equals("pop_back")) {
System.out.println(v.pollLast());
}
else if(command.equals("pop_front")) {
System.out.println(v.pollFirst());
}
else if(command.equals("size")) {
System.out.println(v.size());
}
else if (command.equals("empty")){
if (v.isEmpty()) System.out.println(1);
else System.out.println(0);
}
else if (command.equals("front")){
System.out.println(v.peekFirst());
}
else if (command.equals("back")){
System.out.println(v.peekLast());
}
}
}
}
'자바 알고리즘 > 자료구조' 카테고리의 다른 글
ArrayList (0) | 2024.05.18 |
---|---|
Single Linked List (0) | 2024.05.18 |
리스트와 배열의 차이, 리스트 인터페이스 (0) | 2024.05.14 |
iterator, Listiterator (0) | 2023.08.27 |
동적 배열 (0) | 2023.08.27 |