본문 바로가기
백준/JAVA(자바)

[JAVA]-백준 10773번 : 제로(알고리즘:구현, 자료구조, 스택)

by 유노brain 2023. 3. 5.
반응형

1. 문제

백준 10773번 : 제로

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. 정답확인

반응형

댓글