morenow
morenow
morenow
전체 방문자
오늘
어제
  • 분류 전체보기 (83)
    • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (5)
    • [MSA] Spring Cloud로 개발하는 마이.. (14)
    • Baekjoon Online Judge (40)
    • Programmers (11)
    • Spring Boot (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • successHandler
  • write skew
  • re-distribution
  • 백준20058C++
  • HttpExchange
  • 백준 파이어스톰
  • Id Token
  • Feign Client
  • jwt
  • lost update
  • 마법사 상어와 파이어스톰
  • Spring Boot
  • JWT단점
  • copy up
  • Open Feign
  • B+ Tree
  • HTTP Interface
  • dirty write
  • Refresh Token Refresh
  • B Tree

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
morenow

morenow

Baekjoon Online Judge

[BOJ] 1874 : 스택 수열 (C++) with 스택

2023. 8. 16. 18:56

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

 

1874번: 스택 수열

1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.

www.acmicpc.net

걸린 시간 : 30분 42초


if 문 안에 while 문을 중첩시키려고 해서 많은 오류를 겪었다.

처음부터 코드를 치려고 하지 말고 생각이 정리된 상태로 코드를 쳐야겠다.

 

알고리즘은 간단하다. 수를 입력받고, 2가지 행동 중 하나를 하면 된다.

  • 만약 현재 수 (num) 보다 크다면 스택에 그때까지 계속 push 하면 된다.
  • 만약 현재 수 (num) 보다 작거나 같다면 pop하면 된다. 단, top 과 비교해서 일치하지 않는다면 불가능한 경우가 된다.
#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 num = 1;
	string answer = "";
	for (int i = 0; i < n; i++) {
		int target;
		cin >> target;
		while (num <= target) {
			s.push(num++);
			answer += "+\n";
		}
		if (s.top() == target) {
			s.pop();
			answer += "-\n";
		}
		else {
			cout << "NO";
			return 0;
		}
	}
	cout << answer;
	return 0;
}

'Baekjoon Online Judge' 카테고리의 다른 글

[BOJ] 28303: 자석 (C++)  (0) 2023.08.21
[BOJ] 1780 : 종이의 개수 (C++) with 분할 정복  (0) 2023.08.17
[BOJ] 1912: 연속합 (C++) with 누적합  (0) 2023.08.16
[BOJ] 2644: 촌수계산 (C++)  (0) 2023.08.06
[BOJ] 4963 : 섬의 개수 (C++) with DFS  (0) 2023.08.06
    'Baekjoon Online Judge' 카테고리의 다른 글
    • [BOJ] 28303: 자석 (C++)
    • [BOJ] 1780 : 종이의 개수 (C++) with 분할 정복
    • [BOJ] 1912: 연속합 (C++) with 누적합
    • [BOJ] 2644: 촌수계산 (C++)
    morenow
    morenow

    티스토리툴바