[Q]
1. 정수 배열 [arr] 로 [stk] 생성
2. i = 0
3. i가 arr의 길이보다 작으면 다음 작업을 반복
- 만약 stk가 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더합니다.
- stk에 원소가 있고, stk의 마지막 원소가 arr[i]보다 작으면 arr[i]를 stk의 뒤에 추가하고 i에 1을 더합니다.
- stk에 원소가 있는데 stk의 마지막 원소가 arr[i]보다 크거나 같으면 stk의 마지막 원소를 stk에서 제거합니다.
def solution(arr):
stk = []
return stk
- while i < len(arr)
- if not stk :
- stk[-1] = arr[i]
- if stk[-1] < arr[i] :
- stk[-1] =+ arr[i] , i = +1
- if stk[-1] >= arr[i] :
- stk = stk[:-1]
[A] (내가 쓴 답)
def solution(arr):
stk = []
i = 0
while i < len(arr) :
if len(stk) == 0 :
stk.append(arr[i])
i =+ 1
elif len(stk) > 0 and stk[-1] < arr[i] :
stk.append(arr[i])
i =+ 1
elif len(stk) > 0 and stk[-1] >= arr[i] :
stk = stk[:-1]
return stk
-> 시간 초과
- 봤더니 += 연산자 잘못 씀. -> i =+ 1 -> i += 1 변경했더니 통과
(수정한 답)
def solution(arr):
stk = []
i = 0
while i < len(arr) :
if len(stk) == 0 :
stk.append(arr[i])
i += 1
elif len(stk) > 0 and stk[-1] < arr[i] :
stk.append(arr[i])
i += 1
elif len(stk) > 0 and stk[-1] >= arr[i] :
stk = stk[:-1]
return stk
[A] 다른 답들
def solution(arr):
stk = []
for i in range(len(arr)):
while stk and stk[-1] >= arr[i]:
stk.pop()
stk.append(arr[i])
return stk
'Algorithm > 프로그래머스' 카테고리의 다른 글
[Python] [코딩 기초 트레이닝] / 배열 조각하기 (0) | 2024.08.17 |
---|---|
[Python] [코딩 기초 트레이닝] / qr code (0) | 2024.08.17 |
[Python] [코딩 기초 트레이닝] / 주사위 게임 3 (0) | 2024.08.15 |
[Python] [코딩 기초 트레이닝] / 배열 만들기 2 (0) | 2024.08.15 |
[Python] [코딩 기초 트레이닝] / 문자열 겹쳐쓰기 (0) | 2024.08.15 |