728x90
● [문제번호 1874] 스택 수열
https://www.acmicpc.net/problem/1874
● 알아야 할 것
: stack, vector 자료구조와 메소드
● 풀이 과정
: 목표 배열에 도달하기 위해 stack 자료구조를 사용함
: 1. 목표 배열의 원소까지 stack에 저장 => '+'
: 2. stack의 맨 위 원소 출력 + 삭제 => '-'
: 1~2 번을 반복
● 주의 할 것
: 출력을 바로바로 하게 되면 "NO" 라는 결과를 얻을 수 없음
: 따라서 정답을 저장할 vector를 사용
● 참고 할 것
: (문제 이해) https://st-lab.tistory.com/182
● 풀이 코드
#include <bits/stdc++.h>
using namespace std;
// 연산(+, -)을 저장할 vector
vector<char> result;
// 목표 배열을 저장할 vector
vector<int> target;
// 목표 배열을 위해 거쳐갈 stack
stack<int> s;
// s_num : stack에 들어갔다가 나올 숫자
// flag : 오답인 경우를 위한 신호 변수
int N, s_num, flag;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> N;
// vector을 초기화 하고 입력 받기
target.assign(N, 0);
for(int n = 0; n < N; n++)
cin >> target[n];
// stack을 거쳐갈 숫자는 1부터
s_num = 1;
// 목표 배열을 하나 씩 완성하는 반복문
for(int t : target)
{
// s_num이 t가 될 때 까지 계속 result stack에 쌓임
while(s_num <= t)
{
result.push_back('+');
s.push(s_num++);
}
// 맨 위의 값 == 목표 배열의 한 원소 값
if(s.top() == t)
{
result.push_back('-');
s.pop();
}
// 목표 배열을 만들 수 없는 경우
else
{
flag = 1;
break;
}
}
// 목표 배열을 만들 수 없는 경우
if(flag == 1)
cout << "NO";
// 목표 배열을 만들기 까지 저장한 연산(+, -) vector 출력
else
{
for(char c : result)
cout << c << "\n";
}
return 0;
}
● [백준] - [알고리즘 기초 1/2] - [200 - 자료구조 1] 문제집
번호 | 문제 번호 | 문제 이름 | 풀이 링크 |
1 | 10828 | 스택 | https://pirateturtle.tistory.com/153 |
2 | 9093 | 단어 뒤집기 | https://pirateturtle.tistory.com/154 |
3 | 9012 | 괄호 | https://pirateturtle.tistory.com/155 |
4 | 1874 | 스택 수열 | https://pirateturtle.tistory.com/156 |
5 | 1406 | 에디터 | https://pirateturtle.tistory.com/158 |
6 | 10845 | 큐 | https://pirateturtle.tistory.com/161 |
7 | 1158 | 요세푸스 문제 | https://pirateturtle.tistory.com/162 |
8 | 10866 | 덱 | https://pirateturtle.tistory.com/164 |
728x90
'Baekjoon > [Code.plus] 알고리즘 기초 1/2' 카테고리의 다른 글
[BOJ/백준] 10866 덱 (0) | 2021.07.26 |
---|---|
[BOJ/백준] 1158 요세푸스 문제 (0) | 2021.07.26 |
[BOJ/백준] 10845 큐 (0) | 2021.07.26 |
[BOJ/백준] 1406 에디터 (0) | 2021.07.26 |
[BOJ/백준] 9012 괄호 (0) | 2021.07.26 |
[BOJ/백준] 9093 단어뒤집기 (0) | 2021.07.26 |
[BOJ/백준] 10828 스택 (0) | 2021.07.26 |
댓글