🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/parts/12081
📰 문제 요약
문제 설명, 입력, 출력, 조건 등 간략하게 정리
배열 arr의 각 원소를 숫자 0부터 9까지 이루어져 있다. 이때, 배열 arr에 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 한다. 또한, 제거된 후 남은 수들은 기존에 순서를 유지해야 한다.
🔓 문제 접근 방식
기본 아이디어
- 스택을 이용해서 하나씩 push 하면서 제일 위의 값과 비교하여,
- 같은 숫자면 → 넘어감
- 다른 숫자면 → push
사용 알고리즘
- 스택
💻 구현 방법
- 새로운 배열 answer에 arr 의 원소를 하나씩 push
- push 하기 전에 answer에 제일 위의 숫자와 비교
- 같으면 continue로 넘어가기
- 다르면 push 하기
👍🏻 최종 제출 코드
def solution(arr):
answer = []
answer.append(arr[0])
for num in arr : # 어차피 첫 번째 숫자는 같은 숫자이므로 push가 안되니 처음부터 진행
if num == answer[-1] : # 같은 숫자라면
continue # 넘어감
else : # 다른 숫자라면
answer.append(num) # 추가
return answer
제일 위의 값과 비교할 때에는 arr[-1] 으로 접근할 수 있다는 점을 배웠다
📝 새로 학습한 내용
GPT가 추천해 준 개선 코드
def solution(arr):
answer = []
# 첫 번째 요소는 무조건 추가
answer.append(arr[0])
# 두 번째 요소부터 비교 시작
for num in arr[1:]: # 첫 번째 요소는 이미 추가했으므로 제외
if num != answer[-1]: # 마지막으로 추가된 값과 다르면 추가
answer.append(num)
return answer
- answer.top 대신 answer[-1] 사용:
- 파이썬 리스트는 top이라는 메서드나 속성을 제공하지 않는다!
- 리스트의 마지막 요소를 참조하려면 answer[-1]을 사용
- 첫 번째 요소 제외:
- answer에 첫 번째 요소를 미리 추가했으므로 반복문에서 arr[1:]을 사용해 두 번째 요소부터 비교.
- 불필요한 조건 제거:
- if num == answer[-1]: 조건이 충족되면 continue로 넘어가므로 else를 사용하지 않아도 된다. 코드를 더 간결하게 작성할 수 있다
'Problem Solving > 프로그래머스 (Programmers)' 카테고리의 다른 글
| [프로그래머스] K번째 수 (0) | 2025.02.02 |
|---|---|
| [프로그래머스] 더 맵게 (0) | 2025.02.02 |
| [프로그래머스] 기능개발 (0) | 2025.01.19 |
| [프로그래머스] 완주하지 못한 선수 (0) | 2025.01.11 |
| [프로그래머스] 폰켓몬 (0) | 2025.01.11 |
