UL :)
UL의 개발 블로그
UL :)
전체 방문자
오늘
어제
  • 분류 전체보기 (220)
    • 일상 (1)
    • 회고록 (7)
    • ChatGPT 아카이빙 (0)
    • PS(Java) (114)
      • 백준 (37)
      • 인프런 강의 문제 (77)
    • Web (69)
      • Spring (18)
      • JPA (7)
      • JSP (9)
      • HTML5 (12)
      • CSS (19)
      • HTTP (0)
      • 보안 (2)
    • Language (5)
      • Java (3)
      • JS (1)
      • Python (1)
    • Git, GitHub (4)
    • Settings (18)
      • IntelliJ (7)
      • Eclipse (2)
      • VSCode (3)
      • Android Studio (1)
      • VMware (2)
      • Mac (0)
    • Etc (1)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • produces
  • 요청헤더
  • HttpMessageConverter
  • @RequestParam
  • 영속성컨텍스트
  • SEQUENCE 전략
  • ORM
  • JPA
  • ViewName반환
  • HandlerMethodArgumentResolver
  • 동일성보장
  • ReturnValueHandler
  • 영속성
  • 백준
  • EntityManagerFactory
  • 정렬
  • @Table
  • @Id
  • argumentresolver
  • TABLE 전략
  • @ManyToOne
  • BOJ
  • consumes
  • @Column
  • @JoinColumn
  • @PostMapping
  • IDENTITY 전략
  • @GetMapping
  • 엔티티 매핑
  • 1차 캐시

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
UL :)

UL의 개발 블로그

PS(Java)/백준

[PS] 백준 10828번 스택

2022. 5. 25. 19:11

문제

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

풀이

참고한 풀이
참고글: 자바 컬렉션 프레임워크
참고글: stack interface

 

스택 문제 풀려다가 자바 컬렉션 인터페이스를 공부하게 생긴...

문제 자체는 쉬우나 이번에는 위 글들을 읽으며 자바 컬렉션에 대해 다시 공부했다.

 

  • Stack 라이브러리는 'Vector' 클래스를 상속받아 구현하고 있다.
    • Vector 클래스는 기본적으로 'ArrayList'와 그 구조가 거의 같다.
  • Stack 클래스는 내부에서 최상위 타입 배열인 Object[] 배열을 사용하여 데이터들을 관리
    • (ArrayList는 다른 자료구조와 달리 Object[] 배열(객체 배열)을 두고 사용한다)

 

※ 주의: 객체끼리 비교할 때는 동등연산자(==)가 아니라 반드시 .equals() 로 비교해야 한다. 동등연산자는 주소를 비교하는 것이기 때문에 잘못된 결과를 초래

 

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static int[] stack;
    public static int size=0;

    public static void push(int x) {
        stack[size] = x;
        size++;
    }

    public static int pop() {
        if(size == 0) return -1; //빈 스택일 경우

        int num = stack[size-1]; //삭제할 요소
        stack[size-1] = 0; //삭제
        size--;

        return num;
    }

    public static int size() {
        return size;
    }

    public static int empty() {
        if(size == 0) return 1;
        else return 0;
    }

    public static int top() {
        if(size == 0) return -1;

        return  stack[size-1];
    }

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

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        StringBuilder sb = new StringBuilder();

        int N = Integer.parseInt(br.readLine());
        stack = new int[N];

        for(int i=0; i<N; i++) {
            st = new StringTokenizer(br.readLine());

            switch(st.nextToken()){

            case "push":
                push(Integer.parseInt(st.nextToken()));
                break;
            case "pop":
                sb.append(pop()).append("\n");
                break;
            case "size":
                sb.append(size()).append("\n");
                break;
            case "empty":
                sb.append(empty()).append("\n");
                break;
            case "top":
                sb.append(top()).append("\n");
                break;
            }

        }
        System.out.println(sb);
    }
}
저작자표시 비영리 변경금지 (새창열림)

'PS(Java) > 백준' 카테고리의 다른 글

[PS] 백준 11655번 ROT13  (0) 2022.06.03
[PS] 백준 10799번 쇠막대기  (0) 2022.05.30
[PS] 백준 11004번 K번째 수  (0) 2022.05.24
[PS] 백준 11652번 카드  (0) 2022.05.23
[PS] 백준 10989번 수 정렬하기 3  (0) 2022.05.21
    'PS(Java)/백준' 카테고리의 다른 글
    • [PS] 백준 11655번 ROT13
    • [PS] 백준 10799번 쇠막대기
    • [PS] 백준 11004번 K번째 수
    • [PS] 백준 11652번 카드
    UL :)
    UL :)
    백엔드 개발자를 목표로 달리고 있습니다🔥

    티스토리툴바