Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[just-stopyoon] programmers_같은 숫자는 싫어_Python #10

Merged
merged 1 commit into from
Jan 25, 2025

Conversation

just-stopyoon
Copy link
Contributor

🔗 문제 링크

📰 문제 요약

문제 설명, 입력, 출력, 조건 등 간략하게 정리

배열 arr의 각 원소를 숫자 0부터 9까지 이루어져 있다. 이때, 배열 arr에 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 한다. 또한, 제거된 후 남은 수들은 기존에 순서를 유지해야 한다.

🔓 문제 접근 방식

기본 아이디어

  • 스택을 이용해서 하나씩 push 하면서 제일 위의 값과 비교하여,
    • 같은 숫자면 → 넘어감
    • 다른 숫자면 → push

사용 알고리즘

  • 스택

💻 구현 방법

  1. 새로운 배열 answerarr 의 원소를 하나씩 push
  2. push 하기 전에 answer에 제일 위의 숫자와 비교
  3. 같으면 continue로 넘어가기
  4. 다르면 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를 사용하지 않아도 된다. 코드를 더 간결하게 작성할 수 있다

@just-stopyoon just-stopyoon self-assigned this Jan 18, 2025
@just-stopyoon just-stopyoon added 🪄Programmers 프로그래머스 문제 풀이 🫧Python 풀이 언어 (Python) labels Jan 18, 2025
Copy link
Collaborator

@sangkyu39 sangkyu39 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

기존 배열에서 비교하지 않고 이미 입력된 배열의 가장 마지막 부분과 비교하는게 스택 큐에 활용에 맞게 푼것 같아 좋은 것 같아요! 지피티 코드도 확인하고 비교하는 과정도 있어서 좋은 것 같아요. 수고하셨어요!!

Copy link
Member

@mingxoxo mingxoxo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GPT가 리뷰를 너무 잘해주네요..! 훨씬.. 전문적이야..

스택을 알맞게 활용해서 푼 풀이라 좋았습니다!
확실히 파이썬에서는 arr[-1] 을 사용해서 리스트의 마지막 요소를 참조하는 것이 참 편리한 것 같아요.
수고하셨습니다 😆

Comment on lines +2 to +3
answer = []
answer.append(arr[0])
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
answer = []
answer.append(arr[0])
answer = [arr[0]]

결국 동일한 의미이지만 저는 이렇게 초기화를 해주어서 이렇게 할 수도 있을 것 같아 남겨둡니다 ㅎㅎ

@just-stopyoon just-stopyoon merged commit ebe6d7f into sejongbinary:main Jan 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🪄Programmers 프로그래머스 문제 풀이 🫧Python 풀이 언어 (Python)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants