728x90
풀이
def solution(arr):
answer = []
for i in arr:
if answer and i == answer[-1]:
continue
answer.append(i)
return answer
stack을 활용한 문제.
arr 전체를 돌면서 answer 안에 데이터가 존재할 때 가장 위에 있는 데이터와 지금 넣으려는 데이터가 같으면 continue, 아니라면 answer에 넣는다.
python에서 stack 사용방법
# 선언
stack = []
# push
stack.append(5)
stack.append(2)
# pop
stack.pop() #2
stack.pop() #5
# push
stack.append(5)
stack.append(2)
# pop 하지 않고 젤 위에 있는 데이터 확인
stack[-1] #2
더보기
이전풀이
풀이 1
def solution(arr):
answer = []
answer.append(arr[0])
index = 0
for i in range(1, len(arr)):
if arr[i] == answer[index]:
continue
else:
answer.append(arr[i])
index+=1
return answer
다른 사람 풀이를 참고해보니 파이썬은 슬라이싱을 많이 사용하는 것 같다.
아래는 슬라이싱을 사용한 풀이이다.
풀이 2
def solution(arr):
answer = []
for i in arr:
if [i] == answer[-1:]:
continue
else:
answer.append(i)
return answer
[-1:] 는 배열의 마지막 문자에서 마지막까지 라는 뜻으로 마지막 문자만을 의미하게 된다. 슬라이싱하면 결과가 [결과] 이런식으로 나오기 때문에 [i] == answer[-1:] 로 작성했다.
매우 쉽다
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 코딩테스트 고득점 Kit / 스택/큐] 기능개발 (python) (1) | 2024.01.02 |
---|---|
[프로그래머스 코딩테스트 고득점 Kit / 스택/큐] 올바른 괄호 (python) (0) | 2024.01.02 |
[프로그래머스] 소수 찾기 (python) (0) | 2023.05.16 |
[프로그래머스] 짝수와 홀수 (JAVA) (0) | 2023.02.07 |
[프로그래머스] 행렬의 덧셈 (JAVA) (0) | 2022.12.24 |