반응형
문제를 풀기 앞서
백준에 에디터문제가 있는데 이를 먼저 풀고 푸는 것을 추천한다!
1406 - 에디터
문제풀이
문제에서 front와 back을 보자마자 LinkedList가 떠올랐다! 에디터문제를 푸면서 많이 본 유형이어서 금방 풀었다
LinkedList알아보러가기
출력할때 주의
StringBuilder를 사용하지 않고 Console.WriteLine을 사용하면 시간초과가 뜬다
using System;
using System.Collections.Generic;
using System.Text;
namespace baek2
{
class Program
{
static void Main(string[] args)
{
int N = int.Parse(Console.ReadLine());
LinkedList<int> list = new LinkedList<int>();
int size = 0;
for(int i = 0; i<N;i++)
{
string s = Console.ReadLine();
string[] token = s.Split(' ');
string a = token[0];
StringBuilder sb = new StringBuilder();
switch (a)
{
case "push_back":
int n = int.Parse(token[1]);
list.AddLast(n);
size++;
break;
case "push_front":
int m = int.Parse(token[1]);
list.AddFirst(m);
size++;
break;
case "pop_front":
if (list.First != null)
{
sb.Append(list.First.Value);
list.RemoveFirst();
size--;
}
else
{
sb.Append(-1);
}
break;
case "pop_back":
if (list.Last != null)
{
sb.Append(list.Last.Value);
list.RemoveLast();
size--;
}
else
{
sb.Append(-1);
}
break;
case "size":
sb.Append(size);
break;
case "empty":
int empty = (list.Count > 0) ? 0 : 1;
sb.Append(empty);
break;
case "front":
int front = (list.First != null) ? list.First.Value : -1;
sb.Append(front);
break;
case "back":
int last = (list.Last != null) ? list.Last.Value : -1;
sb.Append(last);
break;
}
if (!a.Contains("push"))
Console.WriteLine(sb.ToString());
}
}
}
}
반응형
'코딩테스트 준비 > 백준 C#' 카테고리의 다른 글
백준 C# - 17413 +) 풀이 (0) | 2023.10.15 |
---|---|
백준 C# - 1753 +) 풀이 단계 설명 (0) | 2023.10.09 |
백준 C# - 1158 +) 문제 설명 및 풀이 (0) | 2023.10.04 |
백준 C# - 10845 (0) | 2023.09.22 |
백준 C# - 10828 (0) | 2023.09.22 |
댓글