스택 수열 [ Python ] [ 백준 : 1874 ]
2023. 5. 27. 21:42ㆍ알고리즘/백준
풀이 및 회고
문제 이해하는데 저어어어어어어엉말 오래걸렸던 문제입니다. 아래처럼 보면 됩니다.
# 4 일때 ++++-
# 3 일때 -
# 6 일때 ++-
# 8 일때 ++-
# 7 일때 -
# 5 일때 -
# 2 일때 -
# 1 일때 -
문제를 푸는데 무려 4시간이 넘게 걸린 문제입니다. 어떻게 해야되는지 생각은 나는데 구현이 쉽사리 되지 않았습니다.
생각이 많았던게 독이었던거 같습니다. 주변 사람들에게 도움을 많이 받았던 문제였습니다.
스택 문제를 더 풀어봐야 할 거 같습니다.
# 스택 수열
# 4 일때 ++++-
# 3 일때 -
# 6 일때 ++-
# 8 일때 ++-
# 7 일때 -
# 5 일때 -
# 2 일때 -
# 1 일때 -
# 1. n 을 입력받는다.
# 2. 리스트를 선언한다. 입력값을 저장할 init, 값을 넣을 stack, 결과 +, - 를 넣을 char
# 3. 기준점인 start 변수를 선언한다.
# 4. 반복문을 돌려 입력을 받은 값을 init 에 저장한다.
# 5. init 값을 반복하는 반복문을 선언한다.
# 6. 반복문안에 반복문을 넣는데 기준점은 start 부터 i의 값 + 1 만큼 반복한다.
# 7. 반복하며 1 부터 값을 넣는데 char 에 + 추가, start 도 1 씩 올려준다.
# 8. 바깓쪽 반복문에 if 문을 적는데 스택의 끝에 있는 값이 init 의 값과 같아진다면 stack 을 pop 하고 char 에 - 를 추가한다.
# 9. 그외에는 No 를 출력하고 종료한다.
n = int(input())
start = 1
stack = []
init = []
char = []
for i in range(n):
init.append(int(input()))
for i in init:
for j in range(start, i + 1):
stack.append(j)
char.append('+')
start += 1
if stack[-1] == i:
stack.pop()
char.append('-')
else:
char = []
print('NO')
break
if char:
for i in char:
print(i)
다른분은 중첩된 반복문을 while 로 처리하는 경우도 있었는데 저는 while이 들어간 코드보다 for 가 중첩된 코드가 더 쉽게느껴졌습니당.
'알고리즘 > 백준' 카테고리의 다른 글
수 찾기 [ Python ] [ 백준 : 1920 ] (0) | 2023.05.28 |
---|---|
균형잡힌 세상 [ Python ] [ 백준 : 4949 ] (0) | 2023.05.27 |
약수 [ Python ] [ 백준 : 1037 ] (0) | 2023.05.27 |
요세푸스 문제 0 [ Python ] [ 백준 : 11866 ] (0) | 2023.05.26 |
덱 [ Python ] [ 백준 : 10866 ] (0) | 2023.05.26 |