문제
no_continuous함수는 스트링 s를 매개변수로 입력받습니다.
s의 글자들의 순서를 유지하면서, 글자들 중 연속적으로 나타나는 아이템은 제거된 배열(파이썬은 list)을 리턴하도록 함수를 완성하세요.
예를들어 다음과 같이 동작하면 됩니다.
s가 '133303'이라면 ['1', '3', '0', '3']를 리턴
s가 '47330'이라면 [4, 7, 3, 0]을 리턴
나의 답
1 2 3 4 5 6 7 8 9 10 11 12 | def no_continuous(s): result_list = [] for i in range( len(s) ) : if i == 0: result_list.append(s[i]) elif s[i] != s[i-1]: result_list.append(s[i]) return result_list # 아래는 테스트로 출력해 보기 위한 코드입니다. print( no_continuous( "133303" )) | cs |
문자열은 list형식으로 index 번호에 접근할 수 있다. 따라서 6번 라인처럼 s[i] != s[i-1]같이 바로 앞의 값과 같지 않을 때 리스트에 추가하는 코드를 작성할 수 있는 것이다.
다른 사람의 답
1 2 3 4 5 6 7 8 9 10 11 12 13 | def no_continuous(s): a=[] for i in s: a.append(i) result=[] for j in range(len(a)-1): if a[j]!=a[j+1]: result.append(a[j]) for j in range(len(a)): if a[len(a)-j-1]!=a[len(a)-j-2]: result.append(a[len(a)-j-1]) break return result | cs |
다른 사람이 삽질한 것을 가져 왔다. s를 인덱스로 접근할 수 있음을 알았다면 3~4라인같이 따로 a라는 배열에다가 s를 넣는 일은 안해도 될 것이다. break는 왜 넣는지 잘 모르겠다...
'Computer Science > Problem Solving' 카테고리의 다른 글
[tryhelloworld]최솟값 만들기 by파이썬 (0) | 2017.08.14 |
---|---|
[tryhelloworld]피보나치의 수 by파이썬 (0) | 2017.08.14 |
[tryhelloword]level1 제일 작은 수 제거하기 by 파이썬 (0) | 2017.08.14 |
[tryhellowrld]level1 행렬의 곱셈 by파이썬 (0) | 2017.07.31 |
[tryhelloworld]level1 행렬의 덧셈 by 파이썬 (0) | 2017.07.31 |