같은 숫자는 싫어
본문 바로가기
항해 전/스터디(Python 알고리즘)

같은 숫자는 싫어

by 은돌1113 2021. 10. 26.

10월 26일

내일 풀어야 하는 알고리즘 문제는 배열이 주어지고 그 배열에 중복되는 값들은 배제하는 문제이다.

파이썬 set(집합)을 이용한 리스트 중복 제거
파이썬 for 반복문을 이용해서 리스트 중복 제거
파이썬 dictionary를 이용해서 리스트 중복 제거 방법

이 세가지 방법을 쓰면 점수가 많이 낮게 나온다

https://blockdmask.tistory.com/543

 

[python] 파이썬 리스트 중복 제거 방법 3가지

안녕하세요. BlockDMask입니다. 오늘은 파이썬 리스트에서 중복된 값을 삭제할 수 있는 방법 3가지에 대해서 알아보겠습니다. <목차> 1. set 이용한 리스트 중복 제거 2. for 반복문을 이용한 리스트 중

blockdmask.tistory.com

 

10월 27일

문제를 잘못 이해하고 있었다. 문제에서는 입력 받은 배열에서 연속적으로 나타나는 숫자를 하나만 남기고 전부 제거 한다는 것이였다. 그래서 다시 검색 해서 코드를 풀어본 결과이다.

 

문제를 잘 읽어보고 차근차근 어떻게 해나가야 할 지 정해서 코드를 짜야 할 것 같다.

너무 급하게 하려고 하다 보니까 문제도 잘못 읽고 쉽게 할 수 있는 코드도 멀리 돌아간 것 같다. 주의!!★

def solution(arr):

    result = []
    
    for i in range(len(arr)):
        if i == 0:
            result.append(arr[i])
        # 맨 처음 숫자는 무조건 result 리스트에 담아준다.
        elif arr[i] != arr[i-1] :
        # 0이 아니면 elif 조건문으로 오기 때문에 1부터 elif에 걸린다.
        # 예를 들어서 i가 1이면 arr[1] != arr[0]이면 result에 추가한다.
        # 하다 보면 index 3에서 index 2를 비교하면 3으로 같은 값이기 때문에
        # elif 조건식에 맞지 않으므로 추가 되지 않는다.
            result.append(arr[i])
        
        
    return result

print(solution([1,1,3,3,0,1,1]))
print(solution([4,4,4,3,3]))

 

코드 분석

1. 연속되지 않는 숫자를 담은 리스트를 선언 해준다.

2. 반복문을 돌려서 arr의 길이만큼 반복한다.

3. 조건문을 사용해서 맨 처음에 있는 숫자를 result 리스트에 추가(append) 한다.

4. elif 조건문을 사용해서 앞에 있는 숫자와 바로 뒤에 있는 숫자를 비교해서 다르면 result 리스트에 추가(append) 한다.

5. 앞에 있는 숫자와 뒤에 있는 숫자를 비교 했을 때 같으면 else로 넘어간다. (else에서는 코드를 실행 할 필요가 없기 때문에 생략함)

 


https://programmers.co.kr/learn/courses/30/lessons/12906?language=python3 

 

코딩테스트 연습 - 같은 숫자는 싫어

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

programmers.co.kr

 

'항해 전 > 스터디(Python 알고리즘)' 카테고리의 다른 글

로또의 최고 순위와 최저 순위  (0) 2021.10.29
3진법 뒤집기  (0) 2021.10.28
소수 만들기  (0) 2021.10.25
완주하지 못한 선수  (0) 2021.10.24
8조 첫번째 스터디 회의  (2) 2021.10.20

댓글