말하는 컴공감자의 텃밭

백준 10773번 제로 <S4> - stack 본문

알고리즘/Backjoon - Java

백준 10773번 제로 <S4> - stack

현콩 2023. 10. 16. 14:50
728x90

 

여기 재민이는 잘하네,,

 

블로그 정리가 오래되어서 몰아서 정리하는 중인데 아무래도 예전에 풀었던걸 다시보면 다른 로직으로 생각이 들기도 하는것 같다.. 정리 잘해둬야징

 

문제를 정리하면 숫자가 주어지고, 실수가 나올때 마다 0을 외쳐서 실수임을 말한다.

스택 자료구조를 사용해서 간단하게 풀수도 있고, 리스트로 값을 넣고 0 나오면 이전걸 지우는 방법도 가능할 듯 싶다.

 

Stack 사용 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.*;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        // Input
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        Stack<Integer> Dont_miss = new Stack<>();
        int answer = 0;
        int k;
        for (int i = 0; i < N; i++) {
            k = sc.nextInt();
            if(k == 0) {
                Dont_miss.pop();                
            }else {
                Dont_miss.push(k);
            }
            
        }
        sc.close();
 
        // Logic
        while(!Dont_miss.isEmpty()){
            answer += Dont_miss.pop();
        }
        
        //output
        System.out.println(answer);
    }
}
 
cs

 

List 사용 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.*;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) { // 백준 10773 S4
        // Input
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        List<Integer> list = new ArrayList<>();
        
        for (int i = 0; i < N; i++) {
            int k = sc.nextInt();
            if (k == 0) {
                if (!list.isEmpty()) {
                    list.remove(list.size() - 1); //
                }
            } else {
                list.add(k);
            }
        }
        sc.close();
        // Logic
        int answer = 0;
        for (int i = 0; i < list.size(); i++) {
            answer += list.get(i);
        }
 
        // output
        System.out.println(answer);
    }
}
 
cs

 

간단쓰~

 

* List 는 add, remove로 추가 삭제 가능. 값 얻는건 get 사용

* Stack은 push, pop으로 추가 삭제 가능. 상단 확인은 peek();

728x90
Comments