티스토리 뷰

코드는 스택을 재활용했다. 큐 역시 C#에서 지원하지만 배열로 구현했다.

스택과 다르게 앞을 가리키는 인덱스, 뒤를 가리키는 인덱스 해서 총 2개의 인덱스가 필요하다. 이는 큐가 FIFO이기 때문이다.


            string[] str;

            string[] keyword = new string[] { "push", "pop", "size", "empty", "front", "back" };

            int[] queue = new int[10000];

            int frontIndex = 0;

            int backIndex = 0;

            int num = int.Parse(Console.ReadLine());

            for (int i = 0; i < num; i++)

            {

                str = Console.ReadLine().Split();

                for (int x = 0; x < keyword.Length; x++)

                {

                    if (str[0].Equals(keyword[x]))

                    {

                        switch (x)

                        {

                            case 0:

                                queue[backIndex++] = int.Parse(str[1]);

                                break;

                            case 1:

                                if (backIndex == frontIndex)

                                    Console.WriteLine("-1");

                                else

                                    Console.WriteLine(queue[frontIndex++]);

                                break;

                            case 2:

                                if (backIndex == frontIndex)

                                    Console.WriteLine("0");

                                else

                                    Console.WriteLine(backIndex - frontIndex);

                                break;

                            case 3:

                                if (backIndex == frontIndex)

                                    Console.WriteLine("1");

                                else

                                    Console.WriteLine("0");

                                break;

                            case 4:

                                if (backIndex == frontIndex)

                                    Console.WriteLine("-1");

                                else

                                    Console.WriteLine(queue[frontIndex]);

                                break;

                            case 5:

                                if (backIndex == frontIndex)

                                    Console.WriteLine("-1");

                                else

                                    Console.WriteLine(queue[backIndex - 1]);

                                break;

                        }

                    }

                }

            }


역시나 느리다 ㅜㅜ
C# 6.0 기준으로 대부분 600ms 정도 걸리는데 100ms대의 분이 있어서 코드를 봤다.
일단 Readline()을 사용하지 않으시네... 하긴 입출력쪽 진행하려면 ReadLine()으로는 진행 절대 안되게 해놨더라.
그때만 StreamBuilder 좀 쓰다가 원래버릇 돌아감.
어차피 Unity에서는 콘솔 쓸일이 없어서(그렇지않나?) Readline이고 자시고 할 일이 없을듯 하긴 한데...
그래두 채점 기다리면서 허송세월하기보단 버릇 바꾸는게 나을듯 ㅡㅡ
그리고 switch 문자열도 가능하구나.. 당연히 정수만 써서 int형만 되는 줄.

var도 쓰시는데 var는 어떤 큰 이점이 있는지 모르겠다. 뭐에 좋지..?

그리고 반복문에 x-->0도 처음보는데 x값에서 -1씩 되어서 0될때까지 반복하는가봄.

진짜 남의 코드 안보고서는 안쓰는 건 평생 안쓸듯... 풀고나면 다른사람 공개코드도 좀 봐야지.

'■ 알고리즘 > ◻ 백준' 카테고리의 다른 글

백준 할때 자주 찾는 메소드  (0) 2018.08.10
[C#]백준 1966번 : 프린터 큐  (0) 2018.08.10
[C#]백준 9012번 : 괄호  (0) 2018.08.09
[C#]백준 10828번 : 스택  (0) 2018.08.09
[C#]백준 10823번 : 더하기 2  (0) 2018.08.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함