목록stack (18)
기록방
👉 문제링크 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 🔸 문제 분석 🔸 기본 문자열과 폭발 문자열이 입력된다. 기본 문자열에서 폭발 문자열 부분이 폭발하며 지워지고, 남은 문자열은 다시 이어 붙는다. 더 폭발할 문자열이 남지 않았을 상태의 문자열을 출력한다. 남은 문자가 없으면 "FRULA"를 출력한다. 🔸 문제 풀이 🔸 문자열의 길이가 100만이기 때문에 O(n^2) 미만의 알고리즘을 사용해야 한다. 반복문 한 번에 계산할 수 있도록 한다. 새로운 문자열이 생기면 메모리 문제가 생길 수..
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 현재 인덱스의 수보다 뒤에있는 수 중에서 현재 수보다 크면서 가장 가까운 수를 찾는다. 그런 수가 없다면 -1을 저장한다. 🔸 문제 풀이 🔸 현재 수보다 큰 '가장 가까운 수'는 스택을 이용해 찾을 수 있다. 뒤에서부터 앞으로 진행해서, 현재 수보다 큰 값이 나올 때 까지 스택에서 수를 빼낸다. 만약 없다면 -1을 저장하고 현재 값을 스택에 넣고 다음을 계산한다. 현재 수보다 작은 수를 스택에서 빼도 되는 이유는 어차피 현재 수를 스택에 넣기 때문에, 이 다음 계산에서 생략해도 ..
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 입력 된 가격 배열에서 각 인덱스의 가격이 몇 초동안 떨어지지 않았는지 반환한다. 🔸 문제 풀이 🔸 스택에 각 가격 별 인덱스를 순서대로 저장한다. 현재 스택에 저장 된 인덱스의 가격이 현재 인덱스 가격보다 크다면 가격이 떨어진 것이므로, 스택에서 인덱스를 꺼내고 지나간 초를 저장한다. 🔸 코드 🔸 import java.util.Stack; class Solution { public int[] solution(int[] prices) { int[] answer = new int[..
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 문자열 s에서 2번 연속으로 나온 문자쌍을 제거해간다. 제거 한 후 앞 뒤로 붙여야하고 그때 만들어진 문자쌍도 지워야 한다. 🔸 문제 풀이 🔸 스택 자료구조를 사용한다. 스택의 가장 위 문자가 현재 문자와 같으면 꺼내고, 다르면 현재 문자를 스택에 넣는다. 마지막에 스택이 비어있으면 문자열을 모두 제거할 수 있는것이므로 1을 반환한다. 🔸 코드 🔸 import java.util.Stack; class Solution { public int solution(String s) { c..
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 열린 괄호( '(' )와 닫힌 괄호( ')' ) 로 이루어진 문자열 s를 입력받는다. 열린 괄호와 닫힌 괄호가 올바르게 쌍을 이루는 문자열인지 판단해 true나 false를 반환한다. 🔸 문제 풀이 🔸 전형적인 스택형 문제지만, 스택으로 풀면 비효율적이다. 열린 괄호가 나오면 카운트를 +1한다. 닫힌 괄호가 나오면 카운트를 -1한다. 카운트가 음수가 되면 올바르지 않은 문자열이다. 🔸 코드 🔸 class Solution { boolean solution(String s) { bo..