본문 바로가기

CodingTest/Baekjun Online Judge

(111)
[ BOJ / 파이썬 ] 3986 좋은 단어 / 제출 1 / import sys input = sys.stdin.readline n = int(input()) answer = 0 for i in range(n): words = list(input().strip()) stack = [] for word in words: if not stack: stack.append(word) else: if stack[-1] == word: stack.pop() else: stack.append(word) if not stack: answer += 1 print(answer)
[ BOJ / 파이썬 ] 5430 AC / 제출 1 / import sys input = sys.stdin.readline tc = int(input()) for i in range(tc): oper = input().strip() n = int(input()) nums = input() if n == 0: print('error') break nums = nums[1:-2] if len(nums) > 2: nums = list(map(int, nums.split(','))) # oper 에서 RR 처리 while 'RR' in oper: oper = oper.replace('RR', '') # ㅇ이고.. replace는 리턴을 주는 녀석이었다. for o in oper: if len(nums) == 0: nums = 'error' break..
[ BOJ / 파이썬 ] 1021 회전하는 큐 / 제출 1 / import sys input = sys.stdin.readline from collections import deque n, m = map(int, input().split()) q = deque([i+1 for i in range(n)]) target = deque(list(map(int, input().split()))) result = 0 for t in target: left = q.index(t) right = len(q) - left if left < right: while True: curr = q.popleft() if curr == t: break q.append(curr) result += 1 else: newLeft = [] while True: curr = q.po..
[ BOJ / 파이썬 ] 2164 카드 2 / 제출 1 / import sys input = sys.stdin.readline from collections import deque n = int(input()) queue = deque([i+1 for i in range(n)]) while True : queue.popleft() if len(queue) != 1: queue.append(queue.popleft()) else: print(queue.popleft()) break 헐. 진짜 설마설마하면서 잘 만들었다고 생각했는데 IndexError라니.. 진짜 멍충.. 시간복잡도 걱정했는데 의외로 500,000을 넣어도 무리 없이 시간 안에 도는 것 같다. 예상한대로 한 번 계산 시마다 절반씩 값이 줄기 때문인 것 같다. 그래도 매번 IndexE..
[ BOJ / 파이썬 ] 18258 큐2 / 제출 1 / import sys input = sys.stdin.readline from collections import deque n = int(input()) queue = deque([]) for i in range(n): oper = input().strip() if oper[:4] == 'push': oper, x = oper.split(" ") queue.append(x) if oper == 'pop': if queue: print(queue.popleft()) else: print(-1) if oper == 'size': print(len(queue)) if oper == 'empty': if queue: print(0) else: print(1) if oper == 'front': i..
[ BOJ / 파이썬 ] 2493 탑 이 문제가 스택 유형이라는 것을 알고 있어서 쉽게 풀 수 있을 것 같다는 생각을 했다. 혼자였으면 스택이라는 것도 파악 못 할 뻔 했어서 그걸 아니까 조금 자신감이 생긴 느낌이었다. / 제출 1 / import sys input = sys.stdin.readline n = int(input()) towers = list(map(int, input().split())) result = [] while towers: current = towers.pop() remains = len(towers) while remains > 0: if towers[remains-1] >= current: break remains -= 1 result.append(remains) while result: print(result..
[ BOJ / 파이썬 ] 1874 스택 수열 / 제출 1 / import sys input = sys.stdin.readline n = int(input()) targets = [] for i in range(n): k = int(input()) targets.append(k) stack = [] t = 0 result = [] for i in range(1, n+1): stack.append(i) result.append('+') if targets[t] == i: j = len(stack) - 1 while targets[t] == stack[j]: stack.pop() result.append('-') t += 1 j = len(stack) - 1 if j < 0: break if stack: print('NO') else: for res i..
[ BOJ / 파이썬 ] 10773 제로 / 제출1 / 그냥 스택을 구현하기만 하면 되는 문제라서 간단하게 풀었습니다. import sys from collections import deque input = sys.stdin.readline k = int(input()) stack = [] for i in range(k): n = int(input()) if n != 0: stack.append(n) else: stack.pop() print(sum(stack))
[ BOJ / 파이썬 ] 1158 요세푸스 문제 / 제출 1 / import sys from collections import deque input = sys.stdin.readline n, k = map(int, input().split()) nums = deque([i for i in range(1, n + 1)]) turn = k - 1 yosepus = [] while nums: if turn > 0: nums.append(nums.popleft()) turn -= 1 continue yosepus.append(nums.popleft()) turn = k - 1 print("") 시간 제한이 너무 적어서 혹시 시간 초과나는 풀이일 수 있어 불안해하면서 제출했는데 다행히도 무사히 넘어갔다. 왜냐하면 전체 숫자 배열을 원하는 결과를 얻을 때까지 정..
[ BOJ / 파이썬 ] 1406 에디터 바로 이 전 글인 https://proprotrainee.tistory.com/156?category=1104458 [ BOJ / 파이썬 ] 5397 키로거 커서 움직이는 것에 대한 조작 문제이다. 쉬워보여서 덤볐다가 못 풀었다. 진짜 쓰렸는데, 다른 분들 풀이 보니까 접근법이 어느정도 유형화되어 있는 것 같고, 도저히 혼자서는 못 풀었을 것 같 proprotrainee.tistory.com 이 글의 문제와 비슷한 유형인 것 같아 바로 풀어봤다. 위의 문제는 스스로 풀어내지 못했다. 정말 약간 벅찬다.. 이게 바로 양치기의 승리를 암시하는 것 같아서 설레면서도 두려워졌다. 평소 같았으면 풀지 못 했을 것 같은 문제인데, 비슷한 유형을 풀고 와보니 어떻게 해야할 지 감이 잡혔다. 기분 너무 좋다.. 더 풀..