DataScience
[LV0] 중복된 문자 제거 - Python 본문
문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.
제한 사항
1 ≤ my_string ≤ 1,000
my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
대문자와 소문자를 구분합니다.
공백(" ")도 하나의 문자로 구분합니다.
중복된 문자 중 가장 앞에 있는 문자를 남깁니다.
입출력 예#1
"people"에서 중복된 문자 "p"와 "e"을 제거한 "peol"을 return합니다.
입출력 예#2
"We are the world"에서 중복된 문자 "e", " ", "r" 들을 제거한 "We arthwold"을 return합니다.
입출력 예시
my_string | result |
"people" | "peol" |
"We are the world" | "We arthwold" |
풀이 및 코드 리뷰
내가 제출한 답
def solution(my_string):
new_string = "".join(dict.fromkeys(my_string))
return new_string
- 중복된 문자를 없애기 위해서 처음엔 set을 사용하여 없애려고 하였다. 그러나 set의 경우 중복과 순서가 없기에 중복된 값이 순서 그대로 나오지 않는 결과가 나와서 다른 방법을 찾던중 set과 동일하게 중복
다른 사람의 풀이1
def solution(my_string):
answer = ''
for i in my_string:
if i not in answer: # i가 answer에 포함이 되지 않은 경우 == True
answer+=i
return answer
- answer = " "에 빈 문자열을 생성하여 my_string의 문자열에서 각 문자가 answer에 포함이 되지 않은 경우 문자를 추가하는 식으로 문제를 풀었다.
참고 자료
1. dict.fromkeys() 함수
- 키 리스트로 딕셔너리를 생성하고 기본적으로 값은 모두 None으로 저장한다.
- 중복된 키 값은 사라지고 unique한 키 값만 남게된다.
- 이렇게 반환된 dictionary 형태를 다시 list로 형변환 해주면 unique한 원소만 남게된다.
2. 소스코드 예제
data = [1, 3, 3, 4, 5]
print("fromkeys(data) 사용 :", dict.fromkeys(data))
print("list 형변환 :", list(dict.fromkeys(data)))
결과
'Coding Review > programmers' 카테고리의 다른 글
[LV0] 숨어있는 숫자의 덧셈 (2) - Python (0) | 2022.10.10 |
---|---|
[LV2] 위장 - python (해시) (2) | 2022.10.05 |
[LV1] 완주하지 못한 선수 - Python(해시) (0) | 2022.10.04 |
[LV0] 세균 증식 - Python (0) | 2022.10.03 |
[LV1] 정수 제곱근 판별 - python (0) | 2022.10.02 |