본문 바로가기

파이썬 프로그래밍/파이썬 심화

[Python] 파이썬 예제. 같은 숫자는 싫어. 중복된 숫자 삭제하

본 문제는 http://tryhelloworld.co.kr/ 에 있는 문제를 가지고 풀이한 것입니다.


문제

no_continuous함수는 스트링 s를 매개변수로 입력받습니다.

s의 글자들의 순서를 유지하면서, 글자들 중 연속적으로 나타나는 아이템은 제거된 배열(파이썬은 list)을 리턴하도록 함수를 완성하세요.
예를들어 다음과 같이 동작하면 됩니다.

  • s가 '133303'이라면 ['1', '3', '0', '3']를 리턴
  • s가 '47330'이라면 [4, 7, 3, 0]을 리턴

1
2
3
4
5
6
def no_continuous(s):
    # 함수를 완성하세요
    return []
 
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( no_continuous( "133303" ))
cs



풀이

1
2
3
4
5
6
7
8
9
10
11
12
def no_continuous(s):
    # 함수를 완성하세요
    r=[]    #정답을 저장할 빈공간의 list 생성
    for i in range(len(s)): #i를 번지수로 돌릴것이며 범위는 s의 갯수만큼
        if i == 0:          #초기값은 무조건 0이기 때문에 중복될수가 없음
            r.append(s[i])  #0은 바로 추가시켜줍니다
        elif s[i] != s[i-1]:#현재 주소와 그전의 주소가 같지 않을경우
            r.append(s[i])  #지금 값을 추가해줍니다
    return r
 
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( no_continuous( "133303" ))
cs

 1

 3

 3

 3

 0

 3 

i

 s[0]

 s[1] 

 s[2]

 s[3]

 s[4

 s[5]

현재 입력받은 133303을 주소로 표시하면 이렇게 됩니다.

7번째줄의 표기는 이렇게 사용할 수 있습니다.

Ex) s[1]과 s[0]이 같지 않을때만 r 리스트에 추가해라



범위가 i-1인 이유는?

i+1로도 해줄 수 있겠지만 만약 i+1로 해주면 range 범위를 넘어가기 때문에 에러가 납니다.
그렇기 때문에 저는 -1로 하게 되었습니다.


결과값