본문 바로가기

Android ᙏ̤̫͚/차근차근 JAVA

[백준 10828번] 스택

 

BOJ10828

 

10828번: 스택

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

www.acmicpc.net

 

[문제]

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

명령은 총 다섯 가지이다.

 

  • push X : 정수 X를 스택에 넣는 연산이다.

  • pop : 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다.  스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.

  • size : 스택에 들어있는 정수의 개수를 출력한다.

  • empty : 스택이 비어있으면 1, 아니면 0을 출력한다.

  • top : 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.

 

<알고리즘 분류> 자료구조, 스택

 

[input]

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 

둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다.

  주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다.

  문제에 나와있지 않은 명령이 주어지는 경우는 없다.

[output]

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

 


 

 


 

[풀이 방법]

  1. Scanner 사용하였을 때 시간 초과 뜨며, BufferedReader+BufferedWriter 사용

  2. Stack 이름의 새로운 클래스 생성하여 스택 관련 함수 정의 해줌

  3. 명령의 개수 입력받아 변수 N에 저장

  4. N개의 명령을 받아 명령 수행

  5. Stack 클래스의 객체를 생성하여 각 명령에 해당하는 함수 호출한 후 내용 출력

 


 

실패 코드 - 런타임 에러(main class Main) + 시간 초과

    - 처음에 package 한 내용을 포함하여 제출해서 런타임 에러 발생

    - Scanner로 해보고 싶어서 해보았는데 시간 초과 발생

 

실패 코드 - 그냥 틀린 코드

    - 클래스 사용하지 않고 내부에서 모두 할 수 있도록 작성했지만 틀린 코드라고 이야기 해줌

 

성공 코드

 

스택 문제는 처음 풀어보는거라 생각한 대로 구현하면 될 줄 알았는데 ,

생각보다 엄청 틀리고 오래 걸려서 참고해서 해결한 문제였다 ,, 또륵

열심히 하자 !!!!! 

 

'Android ᙏ̤̫͚ > 차근차근 JAVA' 카테고리의 다른 글

[백준 10799번] 쇠막대기  (0) 2021.02.11
[백준 9012번] 괄호  (0) 2021.02.11
[백준 11652번] 카드  (0) 2021.02.10
[백준 11004번] K번째 수  (0) 2021.02.10
[백준 10989번] 수 정렬하기 3  (0) 2021.02.10