Stack(5)
-
[Array, Sort, Stack] Merge Intervals
start와 end로 이루어진 interval의 배열이 input으로 들어올 때, 범위가 중복되는 값을 합쳐서 리턴하라 stack을 이용하여 풀이하였다 오름차순으로 정렬 후, stack에 interval[0]를 기준으로 넣어 둔다 interval[0][0]은 start, interval[0][1]은 end일 것이다. 이때 stack의 원소의 end보다(Loop가 돌면 마지막 원소와 비교하게 될 것) intervals의 start가 짧다면, 두개를 합친 배열로 stack의 end를 바꿔준다. 그것이 아니라면 범위를 그대로 푸쉬해주면된다.
2021.04.07 -
[Stack] Decode String
string을 정해진 규칙에 따라 decode하는 문제 모양이 정해진 연쇄적인 string을 처리할때에는 stack을 사용한다 다양하게 index를 활용해보았다. 일단 string, number, bracket 섞여있기때문에, 따로따로 분리해서 처리해준다. 이때 loop를 한번 처리할때마다 pt를 증가시키고, pt가 s의 길이와 같아지면 모든 처리가 끝난셈이므로 종료한다 일단 number가 들어오면 currNum에 숫자를 입력해준다 마찬가지로 string이 들어오면 currStr에 추가해준다 괄호가 열리면 currStr과 currNum을 각각 stack에 넣는다. currStr은 앞에서 처리가 끝나서 문자열로 변환된 값이다 다음에 쓰기 위해 일단 보관용으로 넣어둔다 괄호가 닫히면, numStack에 있는..
2021.03.29 -
[Stack] Daily Temperatures
T라는 daily temperatures가 주어질때, 그 다음 더 큰 온도(warmer temperature)는 몇개의 원소뒤에 나오는지를 value로 표현한 배열을 리턴하라는 뜻이다. 예컨데 [ 70, 71, 65]라면 70보다 큰 온도인 71은 1회, 71,65보다 큰 온도는 아예 나오지 않았으므로 0회이므로 [1, 0, 0]으로 표현된다. 우선 결과배열을 만들고 T의 길이만큼 0으로 채워주는 값을 디폴트로 정한다 이중For문을 이용하여 일일이 돌릴수도 있지만, 연산하지 않아도 되는 원소는 연산하지 않기 위해 Stack을 사용하였다. 앞에 나온 원소는 뒤에서 비교할 필요가 없으므로 Stack에 넣어주는 것이다. 지속적으로 인접한 원소의 크기를 비교해주는 방식이다. stack에 index들을 넣어두고,..
2021.03.27 -
[Stack] Min Stack
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. push(x) -- Push element x onto stack. pop() -- Removes the element on top of the stack. top() -- Get the top element. getMin() -- Retrieve the minimum element in the stack. stack을 구현하는 전형적인 문제다 자바스크립트로 구현하는 prototype 메소드는 this를 이용한다.
2021.02.09 -
[Stack] Valid Parentheses
Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. An input string is valid if: Open brackets must be closed by the same type of brackets. Open brackets must be closed in the correct order. 예전에 라인코테에서 똑같은 문제가 나왔었다. 당연히 스택문제이고, 정상적으로 bracket이 닫히려면 bracket의 종류와 순서를 보면 된다. 괄호는 열린괄호와 닫힌괄호로 나누어 관리한다. 짝이 있으므로 key-value관계에 착안하여 map으로..
2021.02.09