728x90
문제
https://www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
덱이라는 자료구조를 만드는 것이다. LinkedList를 사용해서 풀 수 있다.
덱은 큐와 스택의 장점을 합친 것으로 양 옆에서 데이터를 삽입, 삭제가 가능하다.
코드
using System;
using System.Text;
using System.Collections.Generic;
namespace baekjoon
{
class Algorithm
{
static void Main(string[] str)
{
int cnt = Convert.ToInt32(Console.ReadLine());
LinkedList<string> list = new LinkedList<string>();
StringBuilder sb = new StringBuilder();
int size = 0;
for(int i = 0; i < cnt; i++)
{
string input = Console.ReadLine();
string[] ss = input.Split(' ');
switch(ss[0])
{
case "push_front":
list.AddFirst(ss[1]);
size++;
break;
case "push_back":
list.AddLast(ss[1]);
size++;
break;
case "pop_front":
if(list.First != null)
{
string n = list.First.Value;
sb.AppendLine(n);
list.RemoveFirst(); // void
size--;
}
else
{
sb.AppendLine("-1");
}
break;
case "pop_back":
if(list.Last != null)
{
string n = list.Last.Value;
sb.AppendLine(n);
list.RemoveLast();
size--;
}
else
{
sb.AppendLine("-1");
}
break;
case "size":
sb.AppendLine(size.ToString());
break;
case "empty":
sb.AppendLine(list.Count == 0 ? "1" : "0");
break;
case "front":
sb.AppendLine(list.First == null ? "-1" : list.First.Value);
break;
case "back":
sb.AppendLine(list.Last == null ? "-1" : list.Last.Value);
break;
}
}
Console.WriteLine(sb);
}
}
}
고민
문제 풀면서 너무 스트레스 받았다.
진짜 미친건지..
덱과 LinkedList에 대해서 공부할 수 있어서 좋았다.
큐, 스택, 리스트, 배열, 링크드 리스트 등을 공부하다보면 Append, First, Pop.. 헷갈린다.
자료구조 문제를 푼 뒤에 정리하는 시간을 가져야겠다.
그리고 컴파일 에러 너무 짜증난다.
'동식이 취업시키기 작전' 카테고리의 다른 글
[융합 프로젝트] 포톤 입장한 플레이어 닉네임 가져오기, 플레이어가 입장하면 알림해주기, 입장한 플레이어 UI로 나타내기(실패ㅠㅠ) (1) | 2023.11.11 |
---|---|
[Unity Project] 프리팹을 게임오브젝트로 변환하기(feat. 해당하는 식재료 위에 아이콘 배치하기) (0) | 2023.08.13 |
[UNITY] DestroyZone에 Player가 닿으면 게임 종료되기 (0) | 2023.07.20 |