JAVA
JAVA(2022.09.09) - Stack,Queue를 활용하는 사고 기르기2
IT_LEE
2022. 9. 9. 19:58
Stack문제 적용 예시를 어제 살펴보았고, 직접 적용해보는 시간을 가졌다.
비교적 쉬운 문제를 선정하였다.
문제는 백준 10773번이다.
import java.util.Scanner;
import java.util.Stack;
public class MyClass {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int firstknum = sc.nextInt();
//1번째 줄 K의 숫자
Stack<Integer> stack = new Stack<Integer>();
//K의 줄에 또 숫자가 들어옴
for(int i=0; i<firstknum; i++){
int knum = sc.nextInt();
if(knum == 0){
stack.pop();
}
else{
stack.add(knum);
}
}
int sum = firstknum;
while(!stack.isEmpty()){
int num = stack.pop();
sum = sum+num;
//sum이 231넘으면 끝내기
if(sum>231){
break;
}
}
System.out.println(sum);
}
}
Stack을 이용하는 것이 매우 정석적인 풀이로 이어질 수 있게 나온 문제같다.
for문을 통해 인덱스의 마지막값을 빼주는 형식으로 갈 수 있지만, 그것은 매우 복잡하다.
그러므로 Stack의 first in - last out 구조를 사용하여 0이 나올 시 마지막 순제를 pop해줄 수 있도록 하였다.
앞으로는 Stack과 Queue를 더욱 활용한 clean-code를 사용할 것을 지향하기 때문에 더욱 익숙해질 필요성이 있을 것 같다.