스택 12

[백준] 22942 데이터 체커 python

https://www.acmicpc.net/problem/22942 22942번: 데이터 체커 데이터가 조건에 맞는다면 YES, 조건에 만족하지 않는다면 NO를 출력한다. www.acmicpc.net 주어진 데이터가 조건에 맞는지 확인하면되는 문제이다. 처음 시도한건 브루트포스이다. 추가할때 이미 추가된 원들과 비교하면서 들어갈수 있을때 추가하는 방식으로 풀었는데 시간초과가 났다. ''' boj 22942 wrong answer ''' # import sys; input = sys.stdin.readline def check(cur, circles): x, r = cur for xx, rr in circles: # 동심원인데 반지름까지 같은 경우 if x == xx and r == rr: return F..

STUDY/Algorithm 2022.02.05

[백준] 1863 스카이라인 쉬운거 python

https://www.acmicpc.net/problem/1863 1863번: 스카이라인 쉬운거 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 50,000) 다음 n개의 줄에는 왼쪽부터 스카이라인을 보아 갈 때 스카이라인의 고도가 바뀌는 지점의 좌표 x와 y가 주어진다. (1 ≤ x ≤ 1,000,000. 0 ≤ y ≤ 500,000) 첫 www.acmicpc.net 제목에 쉬운거라고 써있는데 생각하기 조금 어려웠다. N의 최대값이 50000이어서 입력값을 받으면서 한번에 찾아야한다는 생각이 들어서 머리가 잘 돌아가지 않았나보다. (힌트를 봐서 다행히 빨리 풀수 있었다) 알고리즘은 스택을 사용해서 항상 오름차순이 되도록 만들고, 현재 입력값(건물의 높이)와 이전 건물의 높이를 비교해서 풀면된다. 이렇게만 말..

STUDY/Algorithm 2022.02.03

[백준] 1918 후위 표기식 python

www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식 www.acmicpc.net import sys; input = sys.stdin.readline ans = '' s = [] for ch in input().rstrip(): if ch == '+' or ch == '-': while s: if s[-1] == '(': break ans += s.pop() s.append(ch) elif ch == '*' or ch == '/': while s: if s[-1] == '(' or..

STUDY/Algorithm 2021.05.09

[백준] 1874 스택수열 python

www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net n = int(input()) numbers = [int(input()) for _ in range(n)] stack = [] result_list = [] num = 1 result = 0 while num n: if stack[-1] == numbers[result]: result += 1 stack.pop() result_l..

STUDY/Algorithm 2021.04.28

[프로그래머스] LEVEL2 짝지어 제거하기, python3, 2017 팁스타운

def solution(s): if len(s) % 2: #홀수 경우는 불가능 return 0 list_s = list(s) stack = [] for i in range(len(s)): tmp = list_s.pop() if stack == []: stack.append(tmp) elif stack[-1] == tmp: stack.pop() elif stack[-1] != tmp: stack.append(tmp) if stack != []: return 0 return 1 위 코드는 타인의 코드를 보고 생각해보며 내 방식대로 적은 코드이다. 스택의 개념에 대해서는 알지만 어떻게 사용해야할지 잘 몰랐던 것 같다. 스택이 비었을때 추가하고, 스택에 값이 있을때 비교하는것... 앞으로는 제발 잊지 않았으면 ..

STUDY/Algorithm 2021.01.28