본 문제는 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 |
S |
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로 하게 되었습니다.
결과값
'파이썬 프로그래밍 > 파이썬 심화' 카테고리의 다른 글
[Python] 파이썬 짝수단을 구구단 출력하기(2단,4단,6단) (0) | 2017.08.03 |
---|---|
[Python] 파이썬예제. 행렬곱셈(2byte) 풀이 (5) | 2017.04.11 |
[Python] Set. 예제를 통한 집합 기초 개념잡기 (0) | 2017.04.11 |
[Python] 파이썬 예제. 행렬의 덧셈 (0) | 2017.04.07 |
[Python] 파이썬 예제. 가운데 글자 가져오기 (0) | 2017.04.07 |