본문 바로가기

분류 전체보기

(61)
[백준] 1918번 (python 파이썬) https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net s = input() prior = {"+": 0, "-": 0, "*": 1, "/": 1, "(": 2} stack = [] result = "" for c in s: if c.isalpha(): # 문자 result += c else: # 연산자 if c == ")": while stack[-1] != "(": result += stack.pop() else: stack.pop() els..
[백준] 17299번 (python 파이썬) https://www.acmicpc.net/problem/17299 17299번: 오등큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net from collections import Counter import sys _ = input() arr = list(map(int, sys.stdin.readline().strip().split())) count_arr = Counter(arr) stack = [] result = [-1] * len(arr) for i in range(len(arr)-1): stack.append(i) while stack..
[백준] 17298번 (python 파이선) 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 import sys _ = input() # 사용하지 않는다 arr = list(map(int,sys.stdin.readline().strip().split())) stack = [] result = [-1] * len(arr) for i in range(len(arr)-1): stack.append(i) while stack and arr[stack[-1]] < arr[i+1]: result[stack.p..
[백준] 10799번 (python 파이썬) https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net s = input() a = s.replace("()", "*") stack = [] pieces = 0 for c in a: if c == "(": stack.append(1) elif c == "*": pieces += len(stack) else: pieces += stack.pop() print(pieces) "(" 문자는 막대의 시작점 ")" 문자는 막대의 끝점 "()"는 레이저 이다. 이 위치가 ..
[백준] 17413번 (python 파이썬) https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net s = input() result = "" i = 0 while i "문자의 인덱스를 찾아 ""를 한 덩어리로 떼어내 result 변수에 추가한다. 공백 문자를 만났을때 :..
[백준] 10866번 (python 파이썬) https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net from collections import deque import sys order_count = int(input()) queue = deque() for _ in range(order_count): order = sys.stdin.readline().strip() if order.startswith("push_f"): queue.appendleft(order.split()[1]..
[백준] 1158번 (python 파이썬) https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net from collections import deque n, k = map(int, input().split()) queue = deque(range(1, n+1)) result = [] for _ in range(n): for _ in range(k-1): queue.append(queue.popleft()) else: result.append(queue.popleft()) print(str(result).replace("[", "")) 큐 자료구조의 앞 부분을 제거해서 뒷 부분에 추가하..
[백준] 10845번 (python 파이썬) https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net from collections import deque import sys queue = deque() order_count = int(input()) for _ in range(order_count): order = sys.stdin.readline().strip() if order.startswith("push"): queue.append(order.split()[1]) elif..