20트..
해결 방법
1. 출력할 때 string 형 변수에 + \n으로 한번에 집어넣고 마지막에 한번 출력한다.
-> 문제에는 명령이 주어질 때마다 한줄에 하나씩 출력하라고 하는데 그러면 시간초과..
2. string으로 큐를 만든다.
-> 문제에는 정수를 저장하는 큐라고 나와있지만 string으로 큐를 만든다
그리고 정수변환을 하지 않고 큐에 넣음
Int.Parse()가 시간이 오래 걸리나봄??
출력만 한번에 하면 될 줄 알았는데 계속 시간초과 떠서 정수변환을 안했더니 통과했당..
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _10845
{
class Program
{
static void Main(string[] args)
{
Queue<string> queue = new Queue<string>();
int length = int.Parse(Console.ReadLine());
int count = 0;
string printNum = null;
if (length >= 1 && length <= 10000)
{
for (int i = 0; i < length; i++)
{
string input = Console.ReadLine();
if(input.Contains("push"))
{
string[] inputs = input.Split(' ');
queue.Enqueue(inputs[1]);
count++;
}
if (input == "size")
{
printNum += count.ToString() + "\n";
}
if (count>0)
{
if(input=="pop")
{
printNum += queue.Dequeue()+ "\n";
count--;
}
if(input=="front")
{
printNum += queue.First()+ "\n";
}
if (input == "back")
{
printNum += queue.Last()+ "\n";
}
if (input == "empty")
{
printNum += "0\n";
}
}
else if (count == 0)
{
if (input == "pop" || input == "front" || input == "back")
{
printNum += "-1\n";
}
if (input == "empty")
{
printNum += "1\n";
}
}
}
Console.Write(printNum);
}
}
}
}
|
-------------------------------------------------------------------------------------------------------------------
if문으로 작성 -> 시간초과
switch로 작성 -> 시간초과
입력을 한줄로 줄여봤더니 런타임 에러떠서 고쳤더니 -> 시간초과
queue.Count가 오래걸리나 싶어서 count 변수를 따로 뒀는데 -> 시간초과
queue.First 랑 Last가 문제인 줄 알아서 head, tail 변수를 따로 설정해줬는데 -> 시간초과
큐의 갯수가 0일 때 -1이 나오는 명령어를 한번에 묶어 봤는데 -> 시간초과
뭘해도 시간초과
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _10845
{
class Program
{
static void Main(string[] args)
{
Queue<int> queue = new Queue<int>();
int length = int.Parse(Console.ReadLine());
int count = 0;
int printNum = 0;
if (length >= 1 && length <= 10000)
{
for (int i = 0; i < length; i++)
{
string[] input = Console.ReadLine().Split(' ');
string order = input[0];
if(order== "push")
{
int num = int.Parse(input[1]);
if (num >= 1 && num <= 100000)
{
queue.Enqueue(num);
count++;
continue;
}
}
switch (order)
{
case "size":
printNum = count;
break;
case "pop":
if (count > 0)
{
printNum = queue.Dequeue();
count--;
}
else
{
printNum=-1;
}
break;
case "front":
if (count > 0)
{
printNum = queue.First();
}
else
{
printNum = -1;
}
break;
case "back":
if (count > 0)
{
printNum = queue.Last();
}
else
{
printNum = -1;
}
break;
case "empty":
if (count > 0)
{
printNum = 0;
}
else
{
printNum = 1;
}
break;
}
Console.WriteLine(printNum);
}
}
}
}
}
|
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 ��
www.acmicpc.net
'C# > 알고리즘' 카테고리의 다른 글
12. 1074번 Z (시간 줄임) (0) | 2020.07.11 |
---|---|
11. 2504번 괄호의 값 (해결) (0) | 2020.06.22 |
9. 1302번 베스트셀러 (LINQ group by) (0) | 2020.06.07 |
8. 1343번 폴리오미노 (0) | 2020.06.01 |
7. 1181번 단어정렬(수정) (0) | 2020.05.24 |