백준 36

[백준/알고리즘/python/java] 4949번 - 균형잡힌 세상

백준 9012번 괄호 문제에서 소괄호 뿐만 아니라 대괄호도 추가되었다고 생각하면 된다. 입력의 종료조건으로 맨 마지막에 점 하나(".")만 들어온다고 했으니, 무한루프를 만들고, 입력이 점 하나(".")라면 프로그램이 종료되게 하고 그렇지 않으면 계속해서 입력을 하도록 구현하면 된다. 맨 처음에는 IndexError 가 났었다. (IndexError가 났었던 코드) stack = [] while(True): line = input() if(line == "."): break for s in line: if s == "(" or s == "[": stack.append(s) elif s == ")": if stack[-1] == "(": stack.pop() else: break elif s == "]":..

[백준/알고리즘/python/java] 9012번 - 괄호

괄호 문제는 스택 문제중에서도 흔한 유형에 속한다. 여는 괄호와 닫힌 괄호가 쌍을 이루고, 짝이 맞는다면 올바른 괄호 문자열 (Valid PS, VPS) 인 것이다. (코드는 아래와 같다.-파이썬,python) import sys input = sys.stdin.readline testcase = int(input()) for i in range(testcase): bracket = [] stack = [] command = input() bracket.append(command) for j in command: if j == "(": stack.append(j) elif j == ")": if(len(stack) == 0): break else: stack.pop(-1) if(j == command[-..

[백준/알고리즘/python/java] 10773번 - 제로

전형적인 스택 문제이다. 파이썬에서는 스택을 구현할 때, 리스트를 활용하여 push 역할은 append() 로 구현하고 pop 역할은 pop() 으로 구현하면 된다. (코드는 아래와 같다. -python) k = int(input()) sum = 0 number_list = [] for i in range(k): n = int(input()) if n == 0: # 입력된 수가 0 이면 pop number_list.pop(-1) else: number_list.append(n) for answer in number_list: sum += answer print(sum) pop() 안에 따로 인덱스 인자를 안 넣어주면 맨 끝의 원소를 빼준다. (pop(-1) 이나 pop()이나 같은 역할이다.) (아래는 ..

[백준/알고리즘/python/java] 10828번 - 스택

파이썬에서 스택 자료구조 라이브러리를 따로 제공하지 않는다. 대신, 리스트를 스택으로 기능하도록 구현할 수 있다. 이 문제가 바로 그런 문제이다. 문제에서 주어진 다섯가지 명령을 함수로 만들어도 되는데, 우선 스택을 Class 로 만들어봤다. (코드는 아래와 같다.-python) import sys input = sys.stdin.readline class Stack: def __init__(self): self.stack = [] def __len__(self): # 스택의 길이(크기) return len(self.stack) def push(self, item):# 스택에 item 집어넣기 self.stack.append(item) def pop(self):# 스택의 가장 위에 있는 원소 빼내기 if..

[백준/알고리즘/python/java] 2004번 - 조합 0의 개수

일단, 문제 설명이 매우 짧다는 것은 어렵다는 소리일지도 모른다. 흔히 우리가 생각하는 방식으로 풀면 시간초과가 날 가능성이 높기 때문이다. 특히, 이 문제는 n,m 의 범위가 20억까지 들어올 수 있다는 설명을 보고 뭔가 다른 방식으로 풀어야 겠다는 생각이 들었다. '팩토리얼 0 의 개수' 문제처럼 끝자리 0의 개수를 출력하는 것은 맞지만, 이번에는 이항계수 개념이 도입된 문제였다. 이항계수(Binomial Coefficient)는 조합론에서 등장하는 개념으로 주어진 크기 집합에서 원하는 개수만큼 순서없이 뽑는 조합의 가짓수를 일컫는다. 2를 상징하는 '이항'이라는 말이 붙은 이유는 하나의 아이템에 대해서는 '뽑거나' , '안 뽑거나' 두 가지의 선택만이 있기 때문이다. (출처 : shoark7.git..

반응형