반응형
1. 문제
2. 예제 출력
3. 문제이해하기
이 문제에서 핵심은 3번째 문장 "재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지운다는 것이다."
즉 이 문장을 보고 아 이것은 큐 또는 스택이다. 그중 가장 최근데 있는 수를 지우는 것 즉 스택에 대한 문제이구나 라는 것을 알아야한다.
4. 설계해보기
그럼 이제 설계를 해보자
-> 간단하게 설계를 하면 아래와 같이 설계를 할 수 있다.
정수를 받을 k
stack 구현
for( 정수 k 만큼 반복하기){
stack에 입력할 숫자 num을 정의한다.
if(만약 들어간 수가 0일경우){
stack에서 최근 숫자를 뺸다
}
else{
그렇지 않을 경우 stack에 입력할 숫자를 저장한다.
}
stack 안의 요소들을 합할 변수 sum을 선언
while(stack이 비어질때까지){
stack안에 있는 숫자들을 더하기
}
총합 sum을 출력
}
5. 정답코드
위의 토대로 정답코드를 작성해보자
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k = sc.nextInt(); //정수 k개
//스택을 만들기 위해 배열을 선언
Stack<Integer> stack = new Stack<>();
//스택에 값 집어넣기
for(int i=0; i < k; i++){
int num = sc.nextInt();
if(num==0){
stack.pop();
}
else{
stack.add(num);
}
}
int sum = 0; //스택안 숫자 총합
while(!stack.isEmpty()){
sum += stack.pop();
}
System.out.println(sum);
}
}
6. 정답확인
반응형
댓글