https://school.programmers.co.kr/learn/courses/30/lessons/12906
이 문제는 스택에 대한 이해가 필요하다. 스택에 대해 잘 모르겠다면 필자의 다음의 글을 참고하자.
https://vegetableworld.tistory.com/222
테스트케이스를 가지고 태블릿에 그림을 그려보며 문제 해결 방법을 찾았다.
코드를 보며 구현과정에 대해 살펴보자.
def solution(arr):
answer = []
answer.append(arr.pop())
for i in range(0, (len(arr))):
if arr[-1] == answer[-1]:
arr.pop()
else:
answer.append(arr.pop())
answer.reverse()
return answer
예를 들어, arr = [1, 1, 3, 3, 0, 1, 1]이 주어진 경우:
- 첫 번째 arr.pop()에 의해 answer는 [1]이 된다.
- 반복문이 시작되며, arr에서 중복된 연속된 요소인 1과 3이 제거되고, answer에 새로운 요소들 (3, 0, 1)이 추가된다.
- answer.reverse() 후 최종 반환값은 [1, 3, 0, 1]이 된다.
당연한 이야기겠지만 해결방법을 찾고 코드를 치는게 낫다. 정확한 로직을 생각하지도 않고 코드부터 치니 삥 돌아온 느낌이었다.. 특히 스택과 관련된 경우 그림을 그리면서 확실한 문제해결 알고리즘을 생각하고 이를 코드로 구현하자!
'Algorithm > 코딩테스트 고득점 Kit' 카테고리의 다른 글
[고득점 Kit / 스택&큐] 올바른 괄호 (0) | 2024.09.05 |
---|---|
[고득점 Kit / 스택&큐] 기능개발 (0) | 2024.09.05 |
[고득점 Kit / 해시] 의상 (Counter, 리스트 컴프리헨션) (0) | 2024.09.02 |
[고득점 Kit / 해시] 전화번호 목록 (find, startswith, endswith) (0) | 2024.09.02 |
[고득점 Kit / 해시] 완주하지 못한 선수 (해시맵) (0) | 2024.09.01 |