본문 바로가기
728x90

스택4

[PG/Python] 큰 수 만들기 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 📌 문제 접근 방법 처음엔 숫자의 길이에서 k만큼을 빼서 필요한 만큼 숫자를 뽑아내는 방식으로 코드를 짰다. 8, 10번에서 시간초과가 나서 슬라이싱을 deque의 popleft로 바꿔봤는데도 시간초과가 났다. 결국 해결하지 못하고 구글링...😅 스택을 활용한 방법으로 바꿨다! 스택에 숫자를 하나씩 넣고 만약 push하려는 숫자가 스택의 마지막 숫자보다 작다면 스택의 마지막 숫자가 크거나 같아질 때까지 pop을 한다. 반복문이 끝나고 원하는 길이만큼 스택을 슬라이싱해서 answer에 저장한다. 📌 코드 from collection.. 2021. 12. 2.
[Algorithm] 스택(Stack), 큐(queue) 스택 (Stack) 물건을 쌓아 올리듯 자료를 쌓아 올린 형태의 자료구조 스택에 저장된 자료는 선형 구조를 가짐 선형 구조 : 자료 간의 관계가 1대 1 비선형 구조 : 자료 간의 관계가 1대 N (예: 트리) 후입선출구조 (LIFO; Last-In-Firsh-Out) 스택 연산 삽입 : 저장소에 자료 저장 (push) 삭제 : 저장소에서 자료를 꺼냄, 꺼낸 자료는 삽입한 자료의 역순 (pop) 스택이 공백인지 아닌지 확인 : isEmpty 스택에 원소가 있는지가 궁금하다면 연산을 새롭게 정의하지 않고 !isEmpty와 같이 사용 스택의 top에 있는 item(원소)을 반환 : peek 스택의 삽입/삭제 과정 스택 크기 이상의 자료를 push하는 경우 : overflow 자료가 없을 때 pop하는 경우 .. 2021. 10. 3.
[BOJ/Python] 17298. 오큰수 📌 문제 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 📌 문제 접근 방법 스택을 활용해서 풀이해보았다. 오큰수가 존재하지 않으면 -1을 입력하기 때문에 answer의 초기값을 -1로 설정했다. 스택에 값을 넣고 스택에 들어있는 값보다 큰 값이 들어오면 그 값보다 작은 값을 스택에서 모두 빼낸다. 예시로 수열 3 5 2 7 을 순회한다면, i = 0 / 수열의 해당 값 = 3 스택이 비어있으므로 3과 3의 인덱스를 각각 스택에 넣는다. 현재 answer.. 2021. 8. 28.
[BOJ/Python] 10828. 스택 📌 문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 📌 문제 접근 방법 함수로 따로 만들어보기 조건문으로 구현 → 조건문이 시간이 더 짧았다! 왜일까..? 📌 코드 import sys N = int(sys.stdin.readline()) stack = [] for _ in range(N) : command = sys.stdin.readline()[:-1] if 'push' in command : number = int(c.. 2021. 8. 9.
728x90