프로그래밍/코딩테스트

[백준] 스택 큐 덱 문제집

코드몬스터 2024. 11. 22. 13:14
728x90

 

 

다시 보면 좋은 코드

  • stack의 값을 하나씩 출력하는 코드
for (int i = stack.size() - 1; i >= 0; i--) {
    System.out.println(stack.get(i));
}

 

문제집

1874번: 스택으로 오름차순 수열 만들기  - 실버 5

// 작성중입니다.

 

28278번: 스택 2  - 실버 4

  • Stack 클래스가 처음이라 메서드를 확인하면서 풀었다...!!
import java.util.*;
import java.io.*;


public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());

        // 명령어 실행
        Stack<Integer> answer = new Stack<>();
        for (int i = 0; i < N; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());

            int command = Integer.parseInt(st.nextToken());
            if (command == 1) {
                // 정수 X를 스택에 넣는다. (1 ≤ X ≤ 100,000)
                int number = Integer.parseInt(st.nextToken());
                answer.add(number);
            } else if (command == 2) {
                // 스택에 정수가 있다면 맨 위의 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다.
                if (answer.empty()) {
                    bw.write(-1 + "\n");
                } else {
                    bw.write(answer.pop() + "\n");
                }
            } else if (command == 3) {
                // 스택에 들어있는 정수의 개수를 출력한다.
                bw.write(answer.size() + "\n");
            } else if (command == 4) {
                // 스택이 비어있으면 1, 아니면 0을 출력한다.
                if (answer.empty()) {
                    bw.write(1 + "\n");
                } else {
                    bw.write(0 + "\n");
                }
            } else if (command == 5) {
                // 스택에 정수가 있다면 맨 위의 정수를 출력한다. 없다면 -1을 대신 출력한다
                if (answer.isEmpty()) {
                    bw.write(-1 + "\n");
                } else {
                    bw.write(answer.peek() + "\n");
                }
            }
        }

        bw.flush();
        bw.close();

    }


}

 

10773번: 제로 - 실버 4

import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());

        // stack 만들기
        Stack<Integer> answer = new Stack<>();
        for (int i=0; i<N; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int number = Integer.parseInt(st.nextToken());

            if (number == 0) {
                answer.pop();
            } else {
                answer.push(number);
            }
        }

        // stack 합 구하기
        int sum = 0;
        for (int i=answer.size() - 1; i >=0; i--) {
            sum += answer.get(i);
        }

        bw.write(sum + " ");
        bw.flush();
        bw.close();
    }
}

 

9012번: 괄호 - 실버 4

  • isEmpty로 중간처리
  •  
import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());

        for (int i=0; i<N; i++) {
            boolean isEmpty = false;
            Stack<String> answer = new Stack<>();

            String[] symbols = br.readLine().split("");
            for (int j=0; j<symbols.length; j++) {
                if ("(".equals(symbols[j])) {
                    answer.push(symbols[j]);
                } else {
                    if (answer.isEmpty()) {
                        isEmpty = true;
                        break;
                    } else {
                        answer.pop();
                    }
                }
            }

            if (isEmpty || !answer.isEmpty()) {
                bw.write("NO" +"\n");
            } else {
                bw.write("YES" + "\n");
            }
        }

        bw.flush();
    }
}

 

4949번: 균형잡힌 세상 - 실버 4

// 작성 중입니다.

 

12789번: 도키도키 간식드리미 - 실버 3

// 작성 중입니다.

 

18258번: 큐2 - 실버 4

// 작성 중입니다.

 

2164번: 카드2 - 실버 4

// 작성 중입니다.

 

11866번: 요세푸스 문제 - 0 실버 4

// 작성 중입니다.

 

28279번: 덱2 - 실버 4

// 작성 중입니다.

 

2346번: 풍선 터뜨리기 - 실버 3

// 작성 중입니다.

 

24511번: queuestack - 실버 3

// 작성 중입니다.

 

'프로그래밍 > 코딩테스트' 카테고리의 다른 글

오답노트  (0) 2024.12.02
[백준] 재귀 문제집  (0) 2024.11.29
[백준] 일반 수학 1 문제집  (0) 2024.11.21
[백준] 2차원 배열 문제집 (완료)  (0) 2024.11.19
[백준] 1차원 배열 문제집 (완료)  (0) 2023.08.04