목록스택 (3)
개발저장소
문제 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 풀이 크기가 N인 수열 A가 있을 때, 각 원소 Ai에 대하여 Ai보다 오른쪽에 있으면서 큰 수 중에서 가장 왼쪽에 있는 수를 오큰수라고 한다. 수열 A가 있을 때, 각 원소들의 오큰수를 구해야 한다. 오큰수가 없다면 -1을 출력한다. 수열 A의 길이와 각 원소의 크기는 둘 다 1 이상 1,000,000 이하이다. 즉, 다중 for문을 사용한다면 무조건 시간 초과가 일어난다. 스택의 원리를 이해하고 이..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 초 단위로 기록된 배열 prices가 주어진다. 가격이 떨어지지 않은 시간을 return 한다. 맨 처음에는 2중 for문을 사용해서 해당 인덱스와 이후의 인덱스를 비교해서 가격이 떨어질 때 까지 비교하는 방법으로 풀었다. 하지만 이 방법은 시간복잡도가 O(n^2)나 되기 때문에 다른 풀이를 생각해보았다. 순서대로 쌓인 이전 값을 비교한다는 점에서 Stack 자료구조를 사용한다는 사실은..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 올바른 괄호는 반드시 '(' 문자로 열려서 ')' 문자로 닫혀야 한다. 즉, "()()" 또는 "(())()"는 올바른 괄호, ")()(" 또는 "(()(" 는 올바르지 않은 괄호이다. 문자열 s는 괄호로만 이루어져 있다. 괄호는 반드시 '('와 ')'이 쌍을 이루어야 하기 때문에 LIFO ( Last In First Out ) 자료구조인 Stack을 사용해야 한다. 여는 괄호가 나오면..