반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 장애물인식프로그램 파이썬
- 피아노체조 파이썬
- 백준 점프
- 백준 바이러스
- express mongodb
- 백준 등수매기기
- 백준
- 백준알파벳파이썬
- 도커 컨테이너
- 백준 전쟁 파이썬
- MongoDB
- jenkins
- 지도자동구축 파이썬
- 백준 전쟁-전투
- 백준 피아노체조
- 백준 예산
- 소프티어 장애물인식프로그램
- 파이썬 평범한배낭
- 백준 A->B
- CRUD
- express
- 소프티어 지도자동구축
- 1987파이썬
- 백준 점프 파이썬
- MySQL완전삭제
- 프로그래머스
- 등수매기기 파이썬
- 백준 평범한배낭
- 파이썬데이터분석라이브러리
- 금고털이 파이썬
Archives
- Today
- Total
바위 뚫는중
[BOJ] 스택문제 - 9012 괄호, 10828 스택, 10773 제로 Python3 본문
반응형
🔑 백준 괄호 9012
생각 정리
한 쌍의 괄호 ( , ) → ( 아무거나 ) = VPS 라고 부름
괄호가 열리고 닫혀야 YES!!
‘ ) ‘ 이걸로 문자열이 시작되면 안됨
‘ ( ’ 이걸로 문자열이 시작되는 경우의 수를 생각해보자,,
- ‘ ( ’ 이걸로 끝나면 어차피 안됨
- ‘ ) ’ 이걸로 끝나는 경우의 수 = 시작괄호 ’ ( ’ 끝괄호가 ‘ ) ’ 인 경우
- ‘ ( ’ 와 ‘ ) ’의 숫자가 동일해야 함
- ‘ ( ’ 일때 +1 , ‘ ) ’ 일때 -1 이라고 가정하자
- ((()) 일 경우, +1 → X
- (((()()()))) 일 경우, 0 → O
- ()) 일 경우, -1 → X
- 즉, 무조건 0이 나와야만 문제가 해결됨으로 카운트로 풀어낼 수 있을 듯하다. → 코드 1
스택 문제이기 때문에, ‘ ( ’일 경우 스택에 push 해주고 ‘ ) ’이 나올 경우 pop을 해주어서 마지막에 남는게 없도록 하면 더 쉽게 풀 수 있다. → 코드 2
코드 1
# 스택 사용하지 않고 풀이
import sys
t = int(input())
for _ in range(t):
input= sys.stdin.readline().rstrip()
sum = 0
for i in input:
if i == ('('):
sum += 1
elif i == (')'):
sum -= 1
if sum < 0 :
print('NO')
break
if sum > 0:
print('NO')
elif sum == 0:
print('YES')
코드 2
# 스택 사용해서 풀이
import sys
t = int(input())
for i in range(t):
input = sys.stdin.readline().rstrip()
stack = []
cnt = 0
for i in input:
if i == ('('):
stack.append(i)
elif i == (')'):
if stack: #스택이 있는경우
stack.pop()
else: #스택이 없는경우
print("NO")
break
else:
if not stack:
print("YES")
else:
print("NO")
🔑 백준 스택 10828
명령이라니!! 거만한 문제네, 명령!
어따 명령인것이니
생각정리
push: python 에서 stack이라는 빈 리스트를 선언한 후, append 사용
pop: list의 pop 사용
size: 리스트의 length 구하기
empty: 비어있으면 1, 아니면 0 출력 length로 구하면 될듯
top: list의 가장 뒤쪽 출력, 없으면 -1 출력
→ 대충 리스트 내장 기능들로 해결이 가능한것으로 보임
코드
import sys
def push(x):
stack.append(x)
def pop():
if not stack:
return -1
else:
return stack.pop()
def size():
return len(stack)
def empty():
if len(stack) == 0 :
return 1
else:
return 0
def top():
if not stack:
return -1
else:
return stack[-1]
# 첫째 줄에 주어지는 N
N = int(sys.stdin.readline().rstrip()) #rstrip=공백제거
stack = []
# N개에 줄에 주어지는 명령들
for _ in range(N):
input_split = sys.stdin.readline().rstrip().split()
order = input_split[0]
if order == "push":
push(input_split[1])
elif order == "pop":
print(pop())
elif order == "size":
print(size())
elif order == "empty":
print(empty())
elif order == "top":
print(top())
🔑 백준 제로 10773
웬일로 힌트도 주는 문제네 ,, 발전했구나 백준아
확실히 프로그래머스보다 기초부터 하기 좋지만, 정말,,,,, ㅜ 틀이 주어지는 게 좋단말이지~
문제 짜증난다 수학문제도 아니고 재현이가 사고를 많이 치네;;
생각정리
재현이가 숫자 잘못 부를 때 0을 외침 → 가장 최근에 쓴 수를 지움 pop()
재민이가 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 함
0이 아닌 숫자를 입력하면 자동으로 stack.append(숫자)
0을 입력할 시에는 stack.pop()
합은 sum을 이용하여 구하면 될듯하다!
코드
import sys
k = int(input())
stack = []
for i in range(k):
input = sys.stdin.readline().rstrip()
n = int(input)
if n == 0:
stack.pop()
else:
stack.append(n)
print(sum(stack))
진짜 간단하구나?!,,
반응형
'Algorithms' 카테고리의 다른 글
[BOJ] 큐 문제 - 18258 큐 2, 2164 카드2 Python3 (0) | 2023.01.30 |
---|---|
[BOJ] 스택문제 - 1874 스택 수열, 4949 균형잡힌 세상 Python3 (0) | 2023.01.29 |
[Algorithms] 자료구조 - 선형구조 / 비선형구조 (2) | 2023.01.27 |
[BOJ] 백준 13505 주유소 Python3 (0) | 2022.11.02 |
[BOJ] 백준 11047 동전 Python3 (0) | 2022.11.02 |