[C++] 백준 28278번 풀이 (스택2)

정민경·2023년 7월 3일
0

baekjoon

목록 보기
36/57
post-thumbnail

- 문제 (28278번) : 스택2

  • 정수를 저장하는 stack 을 생성한 다음, 입력으로 주어지는 명령을 처리하는 프로그램 구현.
  • 입력으로 주어지는 명령의 종류
    • stack.push()
    • stack.top() && pop()
    • stack.size()
    • stack.empty() ? 1 : 0
    • stack.top()

- 입력 및 출력

[ 입력 ]

  • 첫째 줄에 명령의 수 입력 ( N )
  • 둘째 줄부터 N 개 줄에 걸쳐 명령이 하나씩 주어짐.

[ 출력 ]

  • 출력을 요구하는 명령이 주어질 때마다 결과를 한 줄에 하나씩 출력.
    • 출력을 요구하는 명령

- 문제 풀이

  • 정수를 저장하는 stack 하나 생성.

  • 그 후 명령의 번호 ( 1 ~ 5 ) 를 입력받는다.

    • 명령의 번호에 따라 수행할 작업을 작성한다.

    1) 명령 == 1 이라면
    -> stack 에 push 할 정수 하나 입력받아 stack.push(정수)

    2) 명령 == 2 이라면
    -> stack 이 비어있다면 -1 출력, 비어있지 않다면 top() 으로 정수 출력 후 stack.pop() 수행

    3) 명령 == 3 이라면
    -> stack 의 크기 즉, stack.size() 출력

    4) 명령 == 4 이라면
    -> stack.empty() 에 따라 true 라면 1, 아니면 0 출력

    5) 명령 == 5 이라면
    -> stack.empty() 에 따라 true 라면 -1, 아니면 stack.top() 출력

  • 대부분 어떠한 조건이라면 a 출력, 아니라면 b 출력 과 같은 형태의 출력이었기 때문에 삼항연산차로 코드 구현.

  • c++ 의 std::cin 과 std::cout 으로 구현했을 때 시간초과 발생
    -> 이부분을 해결하고자 scanf() 와 printf() 로 구현했더니 문제 해결!


- 최종 코드

0개의 댓글