반응형
츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 1874번 스택 수열 파이썬(Python)
1) 문제번호 : 1874번
2) 문제 출처
https://www.acmicpc.net/problem/1874
2. 문제
부산일과학고등학교의 효진이는 수학의 귀재이다. 어떤 문제라도 보면 1분 내에 풀어버린다는 학교의 전설이 내려올 정도였는데, 이런 킹ㅡ갓 효진에게도 고민이 생겼다. 대부분의 문제에서 반복되는 연산이 있었기 때문이다! 이 연산은 너무 길어서 종이에 풀던 효진이는 너무 고통스러워서, 자신이 새로 연산자를 만들기로 했다.
연산자의 기호는 @으로, A@B = (A+B)×(A-B)으로 정의내리기로 했다.
하지만, 효진이는 막상 큰 숫자가 들어오자 계산하기 너무 귀찮아졌다.
효진이를 도와 정수 A, B가 주어지면 A@B를 계산하는 프로그램을 만들어주자!
3. 제약사항
4. 입력
첫째 줄에 A, B가 주어진다. (1 ≤ A, B ≤ 100,000)
5. 출력
첫째 줄에 A@B의 결과를 출력한다.
6. 풀이
- 이 문제를 이해하면 쉬운 문제다.
- 1부터 num까지만 스택에 입력을 받는데, num이 스택의 맨 위와 같으면 pop을 하면 된다.
- 근데, 여기서 중요한 것은 출력초과다.
- push를 하면 '+', pop을 하면 '-'를 출력하면 되는데, 그 순간부터 계속 push와 pop을 할 때 '+'와 '-'을 출력했는데, 만약 스택이 만들어지지 않으면 NO만 출력해야 하는데, '+'와 '-'를 출력하다가 NO를 출력한다. 그래서, 따로 리스트를 받아서 맨 마지막에 출력했다.
7. 소스 코드
import sys
input = sys.stdin.readline
#입력값 N
N = int(input())
#스택
stack = []
#스택에 넣는 값
count = 1
#결과를 모으는 리스트
result=[]
for i in range(N):
#값 입력
num = int(input())
#num값까지 스택에 push
while count<=num:
stack.append(count)
result.append('+')
count+=1
#스택 맨 위에 있는 값이 num이면 pop
if stack[-1]==num:
stack.pop()
result.append('-')
else :
print("NO")
exit(0)
for i in result:
print(i)
반응형
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 백준 17256번 달달함이 넘쳐흘러 파이썬(Python) (0) | 2021.05.17 |
---|---|
[백준 알고리즘] 백준 21736번 헌내기는 친구가 필요해 자바(Java) (0) | 2021.05.17 |
[백준 알고리즘] 백준 21734번 SMUPC의 등장 파이썬(Python) (0) | 2021.05.17 |
[백준 알고리즘] 백준 1929번 소수 구하기 파이썬(Python) (0) | 2021.05.15 |
[백준 알고리즘] 백준 15964번 이상한 기호 파이썬(Python) (0) | 2021.05.15 |
[백준 알고리즘] 백준 16170번 오늘의 날짜는? 파이썬(Python) (0) | 2021.05.15 |
[백준 알고리즘] 백준 16394번 홍익대학교 파이썬(Python) (0) | 2021.05.15 |
[백준 알고리즘] 백준 15962번 새로운 시작 파이썬(Python) (0) | 2021.05.14 |
최근댓글