같은 숫자는 싫어

제로콜라좋아요·2024년 5월 22일
0

algorithem

목록 보기
3/37

문제 설명

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,

arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.

제한사항

배열 arr의 크기 : 1,000,000 이하의 자연수
배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수

def solution(arr):
    # 결과를 저장할 리스트
    result = []
    
    # 이전 값을 저장할 변수, 처음에는 None으로 설정
    prev = None
    
    for num in arr:
        # 현재 숫자가 이전 숫자와 다를 때만 결과 리스트에 추가
        if num != prev:
            result.append(num)
        # 현재 숫자를 이전 숫자로 업데이트
        prev = num
    
    return result

<내 코드의 흐름>

  1. solution이라는 함수를 정의하고 이 함수를 arr이라는 리스트를 인자로 받는다.
  2. 결과를 저장할 빈 리스트 result를 초기화한다.
  3. 이전 값을 저장할 변수 prev를 None으로 초기화한다.
    prev 변수는 이전 숫자를 기억하는데 사용할 것이다.
  4. 입력 리스트 arr의 각 요소를 num이라는 변수로 반복한다.
  5. 현재 숫자 num이 이전 숫자 prev와 다르면 다음 블록을 실 행한다.
  6. 현재 숫자 num을 결과리스트 result에 추가한다.
  7. 현재 숫자 num을 이전 숫자변수 prev에 저장하여 다음
    반복에서 비교할 수 있도록 한다.
  8. 최종적으로 중복이 제거된 결과리스트 result를 반환한다.
profile
개발자계의 제로콜라

0개의 댓글