본문 바로가기

stack3

[BOJ] 17298번 - 오큰수 스택을 활용하여 문제를 풀었다. 조건) 자기 자신 보다 오른쪽에 있는 수 중 크고 가장 왼쪽에 있는 숫자를 출력하고 없는 경우에는 -1을 출력한다. vector v에 입력값을 넣고 vector ans는 -1 값으로 초기화 시켜준다. 문제의 조건을 만족하고 stack이 비어있지 않을 경우 vector ans에 값을 넣어준다. #include #include #include using namespace std; int N; int main() { cin.tie(0); ios_base::sync_with_stdio(false); cin >> N; vector v; int num; for (int i = 0; i > num; v.push_back(num); } vector ans(.. 2022. 6. 14.
[BOJ] 2493번 - 탑 자기 자신보다 왼쪽에 있으며 가장 가깝고 높이가 높은 탑의 인덱스값을 출력하는 문제이다. 스택을 활용하여 오른쪽에서 왼쪽으로 높이를 비교하여 답을 찾는 방식을 사용하였다. 처음에는 2중for문으로 그냥 돌려버렸더니 답은 나왔지만 시간 초과가 걸려버렸다. 해당 2중 for문에 대한 코드만 while문을 사용하여 시간제한을 해결하였다. 스택에는 가장 우측부터 탑의 높이와 인덱스를 저장한다. 자기자신보다 높은 탑을 만나면 res배열에 답을 저장하고 처음 res배열은 전역변수로 0으로 초기화 하였기 때문에 자기자신보다 높은 탑을 만나지 못한 경우는 자동적으로 답이 0으로 출력된다. #include #include using namespace std; int N, num; int flag = 1; int ans;.. 2022. 6. 14.
[BOJ] 1874번 - 스택 수열 스택의 개념을 활용하여 입력된 수열의 형태를 표현하는 문제이다. 코드 작성 시 조건은 다음과 같다. 1. 스택에서 push하는 경우 + 출력 이 때 스택에 push하는 순서는 반드시 오름차순을 지킨다. 2. 스택에서 pop하는 경우 - 출력 3. 주어진 수열의 형태를 push, pop 연산으로 표현하지 못하는 경우 NO 출력 vector를 활용하여 스택처럼 사용하였다. 코드 작성 단계를 살펴보면 1. input 배열에 주어진 순열 값을 차례로 집어넣는다. 2. int형 vector v에 1부터 오름차순으로 숫자를 push_back하고 char형 vector res에 +를 push_back한다. 3. vector v가 비어있지 않고 input 배열의 값과 vector v의 마지막 요소를 반환한 back().. 2022. 6. 13.