[백준][Python] 10799번 쇠막대기 - 실버 2
·
백준/스택 & 큐
https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 문제 풀이 1. 레이저를 뜻하는 ')' 과 쇠막대기의 끝점임을 알리는 ')'의 구분이 필요한 문제여서 flag라는 변수에 직전에 나왔던 문자를 저장해줘서 i 이전에 나온 문자에 따라 레이저인지 쇠막대기인지 구분해주었다. 만일 flag에 '('가 저장되었을 경우에 i가 ')'이면 레이저를 뜻하고, flag에 ')'가 저장되었을 경우에 i가 ')'이면 쇠막대기의 끝점을 뜻한다. 2. 쇠막대기의 끝점이 등장하면 ..
[백준][Python] 28278번 스택 2 - 실버 4
·
백준/스택 & 큐
https://www.acmicpc.net/problem/28278 28278번: 스택 2 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다. www.acmicpc.net 문제 풀이 간단한 스택 구현 문제입니다. 조건문에 신경써서 문제를 풀어주세요. 코드 # 28278번 스택 2 import sys st = [] t = int(input()) for _ in range(t): order = sys.stdin.readline().rstrip().split() if len(order) == 2: st.append(order[1]) else: if order[0] == "2": if st: pri..
[백준][Python] 3986번 좋은 단어 - 실버 4
·
백준/스택 & 큐
https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 문제 풀이 1. 좋은 단어라는 것이 무엇인지 처음에 파악하는게 중요하다고 생각했습니다. 좋은 단어는 다음과 같이 아치형 곡선을 그렸을 경우. 겹치지 않고 모두 짝을 이뤄야 합니다. 따라서 좋은 단어는 AABB, ABBA와 같은 글자들입니다. 2. 규칙을 파악해보니 좋은 단어의 조건은 다음과 같습니다. 1. A, B의 각 글자 수가 짝수여야합니다. 2. 아치형 곡선이 겹치는 경우는 짝을 이뤄주지 못하는 글자가..
[백준][Python] 2493번 탑 - 코팩
·
백준/구현
https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 풀이 이중 for문을 사용하면 시간초과가 발생할 수 있다. 파이썬은 1초당 2000만 번의 연산이 가능하다. 그렇기에 n은 최대 500,000이 입력 값으로 주어질 수 있다. 500,000,000,000 -> 5천억 번의 횟수는 주어진 시간제한인 1.5초에 위배된다. 그렇기에 스택을 사용해서 시간 복잡도를 줄여야 한다. 아래의 코드의 시간 복잡도는 O(n)이기에 50만 번의 연산이 이루어진다. ..
[백준] 10773번 제로 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 풀이 스택의 기능을 일부 구현하는 문제입니다. 리스트의 append( ) 메서드와 pop( ) 메서드를 이용해서 풀어주었습니다. # 10773번 제로 import sys n = int(input()) stack = [] for i in range(n): m = int(sys.stdin.readline()) if m == 0: stack.pop() else: sta..
개발자 성현
'스택' 태그의 글 목록