│문제
│풀이
n=int(input())
stack=[]
count=0
result=True
print_result=[]
for i in range(n):
tmp_num=int(input())
while count <tmp_num:
count+=1
stack.append(count)
print_result.append("+")
if stack[len(stack)-1]==tmp_num:
stack.pop()
print_result.append("-")
else:
result=False
break
if result==False:print("NO")
else: [print(i) for i in print_result]
│설명
처음 문제를 구상할 때 n의 수 만큼 입력을 모두 받은 후에 리스트에 저장하여 input_list=[~~~]와 같이 풀이를 하였는데, 풀이를 하다보면 리스트로 만들 수 있는지 없는지 검사하면서 점점 더 복잡해 지는 상황에 이르게 된다.
1.원소 하나 입력받을때 마다 검사를 하여서 while문을 통해 원소가 cout보다 클 때 스택에 push 한다.
2. 스택에 입력받은 원소가 있다면 pop을 한다.
1,2 방안이 둘다 불가능하면 +-로 표현이 불가능한 것이기 때문에 "NO"를 출력한다.
tips)한 줄 for문 작성 방법
for i in range(n):
print("hello")
단순한 for문이 있을때에는 두줄로 나눠져 있기 보다 한 줄로 작성하였을 때 가독성도 좋고 더 깔끔해 보인다.
[print("hello") for i in range(n)]
또한 한 줄 for문 작성을 사용하기에 유용한 예로는 이중배열 선언이 있다.
arr=[[]]
for i in range(row):
for j in range(col):
arr.append(0)
위와 같은코드를 한 줄로 작성시 매우 깔끔하게 가독성이 좋게 작성할 수 있다.
arr=[[0 for i in range(col)] for j in range(row)]
'Baekjoon' 카테고리의 다른 글
[백준] 10870번 피보나치 수 5 ( 파이썬/ c언어) (0) | 2023.07.18 |
---|---|
[백준] 10845번 큐 ( 파이썬 / c언어) (0) | 2023.07.16 |
[백준] 1920번 수 찾기 ( 파이썬 / c언어) (0) | 2023.07.14 |
[백준] 4949번 균형잡힌 세상 (파이썬) (0) | 2023.07.09 |
[백준] 9012번 괄호 (파이썬) (0) | 2023.07.09 |