-코드
s = []
r = []
c = 1
for _ in range(int(input())):
n = int(input())
for i in range(n - c + 1):
s.append(c)
r.append("+")
c += 1
if n == s[-1]:
s.pop()
r.append("-")
if len(s) != 0:
print("NO")
else:
for i in r:
print(i)
처음에 문제를 잘 못 이해해서 배열의 길이를 가지고 코드를 짜서 입력의 중간 까지만 출력이 잘 나오고 그 후로는 이상해서 원리를 찾아보니 입력이 8 4 3 6 8 7 5 2 1일 때, 처음 수는 입력받는 수니 제외하고 4 입력 시 리스트에 1 2 3 4가 입력을 받고 자기 자신을 빼주어서 1 2 3이 남고 다음 3 입력하면 자기 자신을 뺘고 1 2가 남고 이런 식으로 진행이 되는 것이었습니다. 그래서 그것을 가지고 해결을 하고 2번째 입출력에 경우 배열의 마지막 값이 n과 같지 않으면 pop과 push가 불가능하므로 배열에 값이 남으면 no라고 출력이 되도록 하였습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬]2309번 일곱 난쟁이 (0) | 2021.05.14 |
---|---|
[백준/파이썬]30400번 백설 공주와 일곱 난쟁이 (0) | 2021.05.14 |
[백준/파이썬]1929번 소수 구하기 (0) | 2021.05.13 |
[백준/파이썬]2805번 나무 자르기 (0) | 2021.05.12 |
[백준/파이썬]1654번 랜선 자르기 (0) | 2021.05.11 |