본문 바로가기
반응형

스택3

BOJ 1874 - 스택 수열 / C++ 문제 링크 : 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 풀이 입력받은 숫자들은 우리가 만들고자하는 숫자들이다. 이를 배열에 저장해두고 스택을 통해 만들어야 하기 때문에 스택도 생성해준다. 조건에 따라 스택을 통해 순서대로 만들려면 배열(v)의 idx를 0부터 늘려가며 v[idx]의 수를 만들어 스택에 push해야 한다. 테스트 케이스의 예시를 보면, [4,.. 2022. 4. 8.
프로그래머스 - 짝지어 제거하기 / C++ 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 문제 풀이 문자열의 각 문자를 순회하며 스택에 넣는다. 만약 스택이 비어있다면 그냥 넣으면 되고 스택이 비어있지 않다면 top과 비교하여 같은 문자인지 확인한다. 같은 문자라면 상쇄되기 때문에 push해줄 필요없이 pop하면 상쇄된다. 다르다면 그냥 push해주면 된다. 스택이 비어있다면 모든 문자가 짝지어져 상쇄되는 경우이므로 1을,.. 2022. 3. 6.
프로그래머스 - 올바른 괄호 / C++ 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12909 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr 문제 풀이 스택으로 풀이한다. 왼쪽 괄호를 push, 오른쪽 괄호를 pop이라고 생각하면 된다. 만약 왼쪽 괄호가 열리지도 않았는데 오른쪽 괄호가 닫힌다면 스택이 비어있는데 pop하는 것이므로 false를 리턴해준다. for문이 끝났을 때는 스택이 비어있어야 왼쪽 괄호와 오른쪽 괄호의 수가 일치하는 것이.. 2022. 2. 16.
반응형