집게사장의 꿈

백준 C# 5430 AC 본문

기타/백준

백준 C# 5430 AC

Krapboss 2024. 7. 30. 21:35
문제

 

주어진 숫자배열에서 

R  : 반전

D :  배열의 첫번째 제거

 

주어진 배열에 대해 해당 동작을 수행할 것

 

주의 사항 : 

비어있는 배열에 D 명령 시 "ERROR" 출력

D 명령 후 배열이 비어있는 경우 "[ ]" 을 출력

1초 시간내에 수행

 

 

해결

 

string.Join은 입력된 데이터가 없는 경우 string.Empty를 반환

internal class E5430    { // AC
    static void Main(string[] args)
    {
        int iter = int.Parse(Console.ReadLine());

        while (iter > 0)
        {
            iter--;

            //정배열 플래그
            bool ASC = true;
            //에러 플래그
            bool error = false;

            //명령을 저장하기 위함
            string mandate= Console.ReadLine(); Console.ReadLine();

            string str = Console.ReadLine();

            List<int> numbers;
            //숫자가 []와 같이 비어있는 예외 처리
            if (str.Length <3) numbers = new List<int>();
            //배열에서 숫자를 추출하기 위함
            else numbers = str.Substring(1, str.Length - 2).Split(',').Select(int.Parse).ToList();
            
            foreach(char  c in mandate) {
                if ( c.Equals('R'))
                {
                    ASC = !ASC;
                }
                else
                {
                    //비어있는 배열에서 제거 시 ERROR을 출력
                    if (numbers.Count < 1)
                    {
                        error = true;
                        break;
                    }

                    //플래그에 따라 배열의 앞과 뒤를 제거함
                    if (ASC) numbers.RemoveAt(0);
                    else numbers.RemoveAt(numbers.Count-1);
                }
            }

            //스트링 배열 생성 시간을 줄이기 위함
            StringBuilder stringBuilder = new StringBuilder();
            if (error)
            {
                stringBuilder.Append("error");
            }
            else
            {
                stringBuilder.Append('[');

                if (!ASC) { numbers.Reverse(); }

                stringBuilder.Append(string.Join(",", numbers));
                stringBuilder.Append(']');
            }

            Console.WriteLine(stringBuilder);
        }
    }
}

'기타 > 백준' 카테고리의 다른 글

백준 C# 7576 토마토 2차원  (0) 2024.07.31
백준 C# 7569 토마토 3차원  (0) 2024.07.31
백준 C# 2751 수정렬하기2  (4) 2024.07.23
백준 C# _1676 팩토리얼 0의 개수  (0) 2024.07.22
백준 C# 1436 영화감독 숌  (1) 2024.07.22