곽로그
[백준 10773] 제로 본문
반응형
https://www.acmicpc.net/problem/10773
문제분석
"0이 나오면 가장 최근에 쓸 수 있는 문제를 지운다"에서 Stack을 사용해야하는 것을 알 수 있다. 따라서 맨 첫번째 숫자만큼의 사이즈인 스택을 생성한 후, 0을 입력받으면 pop, 0이 아닌 수를 입력받으면 push를 하면 된다.
보완점
아직은 시간복잡도나 공간복잡도를 생각안하고 막 푸는데, 다른 풀이들과 비교해보니 내 풀이는 시간이 좀 오래걸리는 듯하다.
풀이
package stack;
import java.util.Scanner;
class Stack{
int[] stack;
int size;
int pointer;
public Stack(int size) {
stack=new int[size];
this.size=size;
this.pointer=-1;
}
public void push(int num) {
//0일경우 지울 수있는 숫자가 있음을 보장할 수 있기때문에 조건문을 구현할 필요 없음
pointer++;
stack[pointer]=num;
}
public void pop() {
pointer--;
}
public int sum() {
int result=0;
for(int i=0;i<=pointer;i++) {
result+=stack[i];
}
return result;
}
}
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int size=in.nextInt();
Stack stack=new Stack(size);
for(int i=0;i<size;i++) {
int num=in.nextInt();
if(num!=0) {
stack.push(num);
}
else {
stack.pop();
}
}
System.out.println(stack.sum());
}
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 1874] 스택수열 (0) | 2019.12.27 |
---|---|
[백준 2841] 외계인의 기타연주 -보완필요 (0) | 2019.12.27 |
다시 풀어볼 백준문제 (0) | 2019.11.15 |
[백준 2884] 알람시계 (0) | 2019.10.29 |
[백준 2753] 윤년 (0) | 2019.10.27 |
Comments