본문 바로가기
Algorithm/C++

[백준 1874] 스택 수열

by imagineer_jinny 2022. 8. 31.

1874번: 스택 수열 (acmicpc.net)

 

 

정답 풀이

// Authored by : haneulkimdev
// Co-authored by : BaaaaaaaaaaarkingDog
// http://boj.kr/7a18dc82bd4041aaa59c745f06d4ba60
#include <bits/stdc++.h>
using namespace std;

int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  stack<int> S;
  int cnt = 1;
  string ans;
  while (n--) {
    int t;
    cin >> t;
    while (cnt <= t) {
      S.push(cnt++);
      ans += "+\n";
    }
    if (S.top() != t) {
      cout << "NO\n";
      return 0;
    }
    S.pop();
    ans += "-\n";
  }
  cout << ans;
}

/*
현재 처리를 필요로 하는 수는 cnt이다. cnt 이상인 값 t가 주어지면 그 값을 pop할 수 있게 cnt가 t가
될 때 까지 push를 해야 한다(18-21줄). 만약 22번째 줄과 같이 S.top()과 t가 일치하지 않는다면
올바르지 않은 수열이다.
*/

'Algorithm > C++' 카테고리의 다른 글

[백준 7562] 나이트의 이동  (0) 2022.09.01
[백준 5427] 불  (0) 2022.08.31
[백준 7569] 토마토  (0) 2022.08.30
[백준 10026] 적록색약  (0) 2022.08.30
[백준 1012] 유기농 배추  (0) 2022.08.30

댓글