본문 바로가기
코딩테스트 준비/백준 C#

백준 C# - 10866

by 코딩하는 돼징 2023. 10. 4.
반응형

문제를 풀기 앞서

백준에 에디터문제가 있는데 이를 먼저 풀고 푸는 것을 추천한다!

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

댓글