문제https://www.acmicpc.net/problem/2493 풀이이 문제를 처음 풀때는 순회 방식을 이용해 풀이했지만, 시간초과가 발생했다. 이 문제를 풀려면 스택 알고리즘을 이용해야 한다. 스택에 차례대로 타워들을 넣어야 하는데, 이때 기존 스택 마지막에 있던 타워보다 작은 타워는 스택에 들어가지 않고 바로 수신을 받는(스택에 있는 타워) 위치 번호를 답으로 저장한다. 만약 현재 타워가 더 크다면 기존에 있던 타워들 중 현재 타워보다 작은 타워들을 모두 pop해준다. 이때 중의해야할 것은 현재 타워보다 작은 타워들만 없애줘야한다. 이유는 다음에 올 타워들 중 현재 타워보다는 크고 기존 스택의 타워보다 작은 타워가 올 수 있기 때문이다. 코드const input = require('fs') ...
스택
문제https://school.programmers.co.kr/learn/courses/30/lessons/176962# 풀이이 문제는 구현 문제이며 필자는 과제를 담고 있는 배열을 큐를 사용해 사용했고, 남아있는 과제에 스택을 적용해 사용했다. 큐를 사용해 진행중인 과제를 구현해 순서에 맞게 진행되는 과제의 흐름을 직관적으로 활용할 수 있으며, 남아있는 과제에 스택을 적용해 나중에 들어온 과제부터 수행한다는 제한 사항을 충족할 수 있다. 첫번째 풀이는 1시간 정도 걸렸는데, 6번과 9번 케이스에서 계속 틀려서 30분은 고민을 했다. // stack을 이용해 멈춘 과제 저장 후 하나씩 빼내면서 잔업 진행function solution(plans) { const newPlans = plans.map(..
문제 설명https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이 방법이번에 다시 풀어본 문제는 시간 복잡도 최적화가 중요한 문제이다. const solution = (numbers) => { let answer = new Array(numbers.length).fill(-1); for(let i = 0; i numbers[i]){ answer[i] = numbers[j]; ..
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 이 문제에서 주의할 점은 시간복잡도로 인한 시간초과 에러가 발생하면 안된다는 점이다. 입력되는 order의 길이가 최대 1,000,000이기 때문에, O(N)의 시간 복잡도를 갖는 메서드 혹은 방법의 사용은 지양해야한다. (shift나 이중 for문, slice 같이 배열 전체를 확인하는 방식)(링크) 나는 이 문제를 stack을 이용해 풀어 봤다. 예외 처리하는데 어려움을..
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/42584# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 방법 stack을 이용해 풀이를 진행했다. 문제는 각 가격이 언제까지 떨어지지 않는가를 측정하는 문제인데, 떨어지는 기준은 해당 가격보다 아래로 내려가는 것이다. 스택에 떨어지지 않는 가격의 인덱스를 담고, 이후에 떨어지게 되면 stack의 마지막 요소부터 빼줘서 기간을 계산한다. 위의 과정을 거치고도 stack에 남아있는 수들은 한번도 떨어지지 않은 가격이므로 가격 배열의..
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 방법 원래 이 문제를 이중 for문을 이용해 풀어봤다.... 하지만 시간초과가 뜨면서 실패했다..... 그래서 질문탭에서 스택으로 풀어보라는 글을 보고 스택으로 문제를 풀어봤다. 그런데도 설계를 잘 못하겠어서 구글링을 통해 다른 분이 작성한 코드를 참고했다. 코드 const solution = (numbers) => { let answer = Array.from({lengt..