반응형
문제를 풀기 앞서
백준에 에디터문제가 있는데 이를 먼저 풀고 푸는 것을 추천한다!
1406 - 에디터
백준 C# - 1406 +) 문제 설명,풀이
계속 시간초과가 나와서 열받은 문제 시도 풀이 방법 01 String 첫번째로 StringBuilder로 풀었는데 금방 풀려서 신나게 제출했다. 근데 계속 시간초과가 나와서 뭐가 잘못 됐나 봤더니 Stack 2개 or Linked
code-piggy.tistory.com
문제풀이
문제에서 front와 back을 보자마자 LinkedList가 떠올랐다! 에디터문제를 푸면서 많이 본 유형이어서 금방 풀었다
LinkedList알아보러가기
C# - LinkedList 개념, 프로퍼티, 메서드 설명
LinkedList 이중 연결 리스트를 구현한 컬렉션 클래스이다. 노드 삽입, 삭제 O(1), 검색 O(N) LinkedList 상세 설명 알아보러가기 C# - 배열, 동적 배열, 연결 리스트 비교 선형 구조 자료를 순차적으로 나
code-piggy.tistory.com
출력할때 주의
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 |
댓글