https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡IDEA 스택, 큐를 사용하여 풀었다. 먼저 작업의 진도가 작업의 속도만큼 진행되었을 때 몇 일 만에 개발이 완료되는지 q에 저장하고자 했다. 처음에는 while문으로 100이 될때까지 일수를 세어주었는데, 정답 확인 후에 이 부분은 시간을 줄이기 위해서 math의 ceil(올림)함수를 사용했다. 그다음 q에 저장된 수를 popleft 해가면서 현재값보다 큰 값이 나오기 전까지 개발된 기능만 배..
https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡IDEA 스택을 사용하는 문제이다. 스택의 자료구조를 배울 때 연습해보는 가장 기본적인 문제인데 새삼스럽게 풀어보자니 조금 버벅거렸지만 그래도 잘 풀어낸 것 같다. 문자열의 앞에서부터 하나씩 확인하면서 스택에 넣고 빼는 작업을 한다. 여는 괄호('(')인 경우에는 스택에 넣어주고, 닫는 괄호(')')인 경우에는 스택의 top에 있는 것이 여는 괄호일 때 까지 빼준다. 그리고 그 여는 괄호까지 빼..
https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 💡IDEA 스택을 사용하는 문제이다. 처음에는 커서를 움직이며 한 배열에서 pop과 insert 연산을 사용했는데, 시간 초과가 발생했다. 쉽게 커서를 구현하려면 스택을 사용하면 된다. 기존 입력받은 배열(arr)과, 커서 뒤의 배열을 위해 스택용(arr_tmp)을 만든다. 커서의 왼쪽은 arr, 오른쪽은 arr_tmp라고 생각하면 편하다. 연산의 종류에 따라 두 배열에 append 및 pop을 통..
https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 💡IDEA 스택을 사용하는 문제이다. 스택에 차례대로 인덱스와 그 높이를 넣고, 스택의 가장 끝에 있는 값의 높이가 i번째 탑의 높이보다 높은 경우에 결과 배열에 인덱스+1을 저장한다. 높이가 낮은 경우 pop을 해준다. 스택에 아무것도 남지 않을 때까지 반복한 후 다음 인덱스와 높이를 넣는다. 현재 탑을 기준으로 왼쪽, 그러니까 이전의 탑들 중 자신보다 큰 높이의 탑의 인덱스를 저장해야하기 때..
https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net 💡IDEA 스택을 사용하는 문제이다. 스택을 통해서 괄호를 확인하는 것은 잘 구현했는데, 점수를 매기는 부분에서 어려움을 겪었다. 처음에는 스택 하나로 '()'와 '[]'를 모두 해결하려 했지만 두 가지 경우 따로 스택을 만들어 주는 쪽이 계산하기 편했다. 여는 괄호가 나오면 tmp에 점수를 곱하고, 닫는 괄호가 나오면 바로 직전 값이 같은 유형의 여는 괄호인 경우에만 결과값에 더해주고 tmp를..
https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 💡IDEA 스택을 사용하는 문제이다. 처음에는 replace를 사용하여 풀었지만 역시나 시간 초과가 발생했다. 스택을 사용해서 입력 문자를 하나씩 넣고, 스택에 쌓인 문자열 끝에 폭발 문자열이 있으면 그만큼 pop 해준다. 조인을 잘 활용해야 하고 스택에 아무것도 남아있지 않다면 "FRULA"를 출력한다. 📌CODE import sys input = sys.stdin.readline..
https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net 💡IDEA 스택을 사용하는 문제이다. 중위 표기식을 후위 표기식으로 변환하기 위해서 변환식 스택 하나, 연산자 스택 하나가 필요하다. 입력받은 문자 중 알파벳인 경우와, 연산자인 경우로 나눈다. 알파벳인 경우 변환식 스택에 추가한다. 연산자인 경우 여는 괄호( '(' )인 경우, 연산자 스택에 추가한다. 닫는 괄호( ')' )인 경우, 여는 괄호가 나올 때 까지 연산자 스택에서 pop 하여 변..