-
[백준] 1874 - 스택 수열 (Python)코딩테스트 2021. 3. 5. 17:20
제출 코드
n = int(input()) stack = [] result = [] count = 1 # 숫자만큼 반복 for i in range(n): input_num = int(input()) # 입력받은 수까지 숫자를 늘려가며 stack에 쌓는다 while count <= input_num: stack.append(count) count += 1 result.append("+") # 만일 stack의 마지막 원소가 입력한 숫자와 같다면 pop if stack[-1] == input_num: stack.pop() result.append("-") # while에 들어가지도 못하고, stack의 마지막 원소가 입력한 숫자가 아니라면 # NO 출력하고 종료 else: print("NO") exit(0) for j in result: print(j)
숫자를 쌓을 stack과 결과물을 저장할 result 리스트를 초기화한다.
쌓을 숫자를 count로 1로 초기화한다.
처음 입력받은 숫자만큼 반복을 돌리며, 숫자를 입력 받는다.
입력받은 숫자와 같을 때까지 스택에 숫자를 append하고 쌓을 숫자를 늘리는 것을 반복하며, +를 append한다.
count가 입력한 숫자보다 커져서 while문을 빠져나왔다면, 스택의 마지막 원소가 입력한 숫자와 같은지 확인하고, 같다면 pop을 하고, result에 -를 append한다.
while문에 들어가지도 않고, stack의 마지마 원소가 입력한 숫자가 아니라면, NO를 출력하고 끝낸다.
마무리로 result를 출력하면 된다.
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 문자열 내 p와 y의 개수 (Python) (0) 2021.03.25 [프로그래머스] 1878 - 나머지 한 점(Python) (0) 2021.03.06 [백준] 2798 - 블랙잭 (Python) (0) 2021.03.05 [백준] 2920 - 음계 (Python) (0) 2021.03.05 코드업(CodeUp) 기초 100제 1001-1054 (Python) (0) 2021.01.27