문제
문자열을 전달받아 해당 문자열에서 중복해서 나타난 문자들을 담은 list를 반환하는
duplicated_letters 함수를 작성하시오.
생각해보기
1. 문자열을 두 번 순회해서 첫 단어와 다음 단어를 비교....
2. 문자가 같지 않다면 그 두 요소 중 하나의 요소를 새로운 리스트에 넣으면 될 것 같다..?
.....
3. 일단해보기..
풀이
def duplicated_letters(s):
a = 0
letters_list = [] # 중복 되는 단어들을 담아줄 리스트 생성
for i in s: # 리스트를 순회
a += 1 # 다음 요소와 비교하기 위한 인덱스를 하나씩 넣어줌
for j in s[a:]: # 순회하는 리스트 요소의 다음값을 순회하는 반복문 생성
if i == j:
letters_list.append(i)
letters_set = set(letters_list) # 리스트 내에 중복값 제거
letters_list1 = list(letters_set)
return letters_list1
print(duplicated_letters('apple')) # => [‘p’]
print(duplicated_letters('banana')) # => [’a’, ‘n’]
해설
처음 생각해본 연속되는 두 요소가 다르면 한 요소를 리스트에 넣는 것.
반은 맞았고, 반은 틀렸다..
코드를 보면 마지막 부분에 set를 통해 중복 값을 없애주었는데
그 이유는 'banana' 같은 경우 ['a', 'n', 'a', 'n'] 이런 식으로 나타났다.
문제 자체를 약간 다르게 해석하고 푼 것이다.
문제의 내용은 "문자열 요소 중 하나 이상의 같은 요소를 적는 것"
즉, 각 이어지는 요소들을 비교하면 안 됐다.
새로운 리스트를 넣은 다음, for문을 통해 각 요소가 리스트에 있으면 안 넣고, 없으면 넣어주는 형식으로 풀었어야 했다.
어쨌든 맞긴 했으니까.... 다음부터는 참고하자!
'실습 문제' 카테고리의 다른 글
숫자로 사각형 만들기 (파이썬) (0) | 2022.07.30 |
---|---|
카 쉐어링 요금 계산 (파이썬) (0) | 2022.07.29 |
두 명씩 짝을 지어보자 클래스사용 (파이썬) (0) | 2022.07.28 |
콜라츠 추측(Collatz conjecture) 변형 (파이썬) (0) | 2022.07.27 |
같은 혈액형의 사람 수를 구하라(파이썬) (0) | 2022.07.25 |