728x90
반응형
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
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
public static int n;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
Stack<Integer> stack = new Stack<Integer>();
n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
String s = st.nextToken();
if (s.equals("push")) {
int n2 = Integer.parseInt(st.nextToken());
stack.push(n2);
} else if (s.equals("top")) {
if (stack.size() < 1) {
System.out.println(-1);
} else {
System.out.println(stack.peek());
}
} else if (s.equals("size")) {
System.out.println(stack.size());
} else if (s.equals("empty")) {
if (stack.size() < 1) {
System.out.println(1);
} else {
System.out.println(0);
}
} else if (s.equals("pop")) {
if (stack.size() < 1) {
System.out.println(-1);
} else {
System.out.println(stack.pop());
}
}
}
}
}
|
cs |
처음 쓴 코드
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
105
106
107
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static int[] arr;
public static int n;
public static int k;
public static void push(int n, int num, int index) {
arr[n - index - 1] = num;
}
public static void pop(int n) {
int i = 0;
while (true) {
i++;
if (arr[i] > 0) {
System.out.println(arr[i]);
arr[i] = 0;
break;
} else if (arr[n - 1] == 0) {
System.out.println(-1);
break;
}
}
}
public static void size(int n) {
int total = 0;
for (int i = 0; i < n; i++) {
if (arr[i] > 0) {
total++;
}
}
System.out.println(total);
}
public static void empty(int n) {
int total = 0;
for (int i = 0; i < n; i++) {
if (arr[i] > 0) {
total++;
}
}
if (total == 0) {
System.out.println(1);
} else {
System.out.println(0);
}
}
public static void top(int n) {
int i = 0;
while (true) {
if (arr[i] > 0) {
System.out.println(arr[i]);
break;
} else if (arr[n - 1] == 0) {
System.out.println(-1);
break;
}
i++;
}
}
public static void main(String[] args) throws NumberFormatException, IOException {
Scanner sc = new Scanner(System.in);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
n = Integer.parseInt(br.readLine());
arr = new int[n];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
String s = st.nextToken();
while (st.hasMoreTokens()) {
int k = Integer.parseInt(st.nextToken());
push(n, k, i);
}
if (s.equals("top")) {
top(n);
} else if (s.equals("size")) {
size(n);
} else if (s.equals("empty")) {
empty(n);
} else if (s.equals("pop")) {
pop(n);
}
}
}
}
|
cs |
뭔가 메서드도 만들고 어쩌구 저쩌구 썼는데 뭔가 시간초과 걸릴 것 같아 구글에 서치를 해봤고
스택 라이브러리가 있다는 것을 발견했다..!
자바 스택 라이브러리
push() | 스택에 삽입 |
pop() | 스택에서 가장 위에 있는 값을 반환하고 없앤다 |
peek() | 스택에서 가장 위에 있는 값 반환 |
isEmpty() | 스택이 비어있는지 반환 |
size() | 스택에 있는 요소 크기 반환 |
<참고한 글>
https://gorani95.tistory.com/150
728x90
반응형
'알고리즘 > 스택,큐,덱' 카테고리의 다른 글
[java 백준] 실버 4/ 10866번 덱 (0) | 2021.08.29 |
---|---|
[java 백준] 실버 4/10845번 큐 (0) | 2021.08.29 |
[Queue개념] Queue/원형 Queue (0) | 2021.08.29 |
[java 백준] 실버 3/1874번 스택수열 (0) | 2021.08.29 |
[java 백준] 실버 3/ 10799번 쇠막대기 (0) | 2021.08.26 |
댓글