스택 구현문제를 풀어보았다.
자바에는 Stack stack = new Stack <>()을 선언해서 사용할 수 있지만,
스택 자체를 공부하기에는 직접 구현하는 것이 도움이 될 것 같아서
문제 요구사항대로 스택을 구현했다.
스택은 쌓인다 라는 의미로, 먼저 들어온 것이 마지막에 나가고,
마지막에 들어온 것이 먼저 나가게 되는 LIFO(Last In First Out) 구조이다.
추가로 큐 자료구조는 FIFO(First In Last Out).
전체코드는 문제의 요구사항대로 구현했다.
다음 코드는 세 번의 제출 중 가장 깔끔하다 생각하는 세 번째 제출 코드이다.
import java.io.*;
import java.util.StringTokenizer;
public class Main {
private static int size = 0;
private static int[] stack = new int[10000];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for(int i = 0; i < N; i++){
StringTokenizer st = new StringTokenizer(br.readLine());
String input = st.nextToken();
switch (input){
case "push" :
push(Integer.parseInt(st.nextToken()));
break;
case "pop" :
sb.append(pop()).append('\n');
break;
case "size" :
sb.append(size()).append('\n');
break;
case "empty" :
sb.append(empty()).append('\n');
break;
case "top" :
sb.append(top()).append('\n');
break;
default : break;
}
}
br.close();
bw.write(sb.toString());
bw.flush();
bw.close();
}
public static void push(int n){
stack[size++] = n;
}
public static int pop(){
if (size == 0)
return -1;
else
return stack[--size];
}
public static int size(){
return size;
}
public static int empty(){
if (size == 0)
return 1;
else
return 0;
}
public static int top(){
if (size == 0)
return -1;
else
return stack[size-1];
}
}
시간 단축을 할 방법을 찾으며 제출은 총 세 번 했다.

첫 번째 제출 (왼쪽) 은
import java.io.*;
import java.util.StringTokenizer; 두 개의 임포트를 해주고,
top()과 pop() 메서드 else 부분을 {} 괄호로 묶어주어 제출했다.
세 번째 제출 (오른쪽) 은
두 개의 임포트와 메서드의 else부분의 {} 괄호를 빼고 제출했다.


아래의 두 번째 제출에서는
다음과 같이 하나하나 임포트를 해주었고,
추가로 괄호와 공백정리도 해주었다.

java.io를 묶어 임포트 하고, 괄호 공백 정리를 안 한
1번 제출보다
괄호와 공백을 정리 한
3번 제출이 속도가 빠르고,
사용하는 클래스만 임포트 하고 공백 괄호 정리를 해준
2번 제출의 속도가 빠른 걸 확인할 수 있었다.
'코딩테스트' 카테고리의 다른 글
| 프로그래머스 문자열 잘라서 정렬하기 (1) | 2024.08.31 |
|---|---|
| 백준 10845번 큐 (0) | 2024.07.05 |
| 백준 11720번 숫자의 합 (0) | 2024.06.19 |