Blue___
코딩배우는 학생🌎
Blue___
전체 방문자
오늘
어제
  • 코딩배우는 학생🧀 (242)
    • Algorithms (145)
      • BOJ[Java] (107)
      • Programmers[Java] (32)
      • Coding_Contest (3)
    • Web (22)
      • .NET Core C# (2)
      • Java (1)
      • Oracle SQL (7)
      • Web-ProJect (3)
      • Error처리 (1)
      • Web지식 (4)
      • Javascript (1)
      • Vue (3)
    • Git (4)
    • Java_beginner(Repl.it) (55)
      • Auto-Graded-Course(AP CS A) (54)
    • 프로젝트 직딩일기 (3)
    • Hanyang_Assignment (0)
    • 이모저모 (4)
      • 잡담 (1)
      • 2021 오픈소스 컨트리뷰터 아카데미 (1)
      • DDD - 6기! (1)
    • 북리뷰 (1)
      • 리팩토링 2판 (1)
      • 클린코드 (0)

블로그 메뉴

  • 🐰GITHUB
  • ☘️포트폴리오
  • 🌸MBC개발_투표 2022
  • 🍭MBC_APP

공지사항

인기 글

태그

  • coding
  • 코딩
  • 프로그래밍
  • AP CS A
  • repl.it
  • 코딩배우는학생
  • 프로그래머스
  • 자바
  • Java
  • 알고리즘
  • auto-graded course
  • REPL
  • 백준
  • programmers
  • algorithm
  • 코딩배우는 학생
  • Bakjoon
  • 레플릿
  • java basic
  • Java tutorial

최근 댓글

최근 글

티스토리

hELLO
Blue___

코딩배우는 학생🌎

[백준/10828번] 스택(Stack) [Java]
Algorithms/BOJ[Java]

[백준/10828번] 스택(Stack) [Java]

2019. 12. 2. 14:35

문제

정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.

명령은 총 다섯 가지이다.

  • push X: 정수 X를 스택에 넣는 연산이다.
  • pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • size: 스택에 들어있는 정수의 개수를 출력한다.
  • empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
  • top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.

입력

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

출력

출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.

 

 


풀이

스택의 조건에 따라서 if문을 따라서 나누어 주었다. 특별한 함수나 알고리즘이 필요없이 문제 조건을 따라가다보면 쉽게 풀리는 문제.

ㅇㅅㅇ

 

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
33
34
35
36
37
38
39
40
41
42
43
import java.util.*;
 
 
class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int N=sc.nextInt();
    String input;
    int [] arr =new int[N];  //스택 저장소 
    int top=-1; //정수가 없는경우 -1이므로 
    
    for(int i=0;i<N;i++) {
        input=sc.next();
        if(input.equals("push")) {
            top++;
            arr[top]=sc.nextInt();           
        }
        //pop일때 
        else if(input.equals("pop")) {
            if(top==-1) {System.out.println(-1);}
            else {
                System.out.println(arr[top]);
                top--;    
        }
        }
        //size 출력 
        else if(input.equals("size")) {
            System.out.println(top+1);
        }
        //empty출력 
        else if(input.equals("empty")) {
            if(top==-1)  {System.out.println(1);}
            else { System.out.println(0);}}
        //top출력 
        else if    (input.equals("top")) {
            if(top==-1) {System.out.println(-1);}
            else {
                System.out.println(arr[top]);
            }
        }               
        }
    }     
  }
 
 

 

https://www.acmicpc.net/problem/10828

 

10828번: 스택

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

www.acmicpc.net

 

반응형
저작자표시 (새창열림)

'Algorithms > BOJ[Java]' 카테고리의 다른 글

[백준/1978번] 소수 찾기 [Java]  (0) 2019.12.02
[백준/3460번] 이진수 [Java]  (0) 2019.12.02
[백준/2941번] 크로아티아 알파벳 [Java]  (1) 2019.12.02
[백준/11399번] ATM [Java]  (0) 2019.12.02
[백준/2751번] 수 정렬하기 2 [Java]  (0) 2019.12.01
    'Algorithms/BOJ[Java]' 카테고리의 다른 글
    • [백준/1978번] 소수 찾기 [Java]
    • [백준/3460번] 이진수 [Java]
    • [백준/2941번] 크로아티아 알파벳 [Java]
    • [백준/11399번] ATM [Java]
    Blue___
    Blue___
    완전 연소한 불은 재를 남기지않는다 : 코딩배우는학생 🌎

    티스토리툴바