중복된 문자 제거
2024. 9. 3. 18:00ㆍ코딩테스트 입문
https://school.programmers.co.kr/learn/courses/30/lessons/120888
문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_string ≤ 110
- my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
- 대문자와 소문자를 구분합니다.
- 공백(" ")도 하나의 문자로 구분합니다.
- 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.
입출력 예
my_string | result |
"people" | "peol" |
"We are the world" | "We arthwold" |
입출력 예 설명
입출력 예 #1
- "people"에서 중복된 문자 "p"와 "e"을 제거한 "peol"을 return합니다.
입출력 예 #2
- "We are the world"에서 중복된 문자 "e", " ", "r" 들을 제거한 "We arthwold"을 return합니다.
문자열의 첫 번째 값들만 남기고, 나머지 값들은 삭제하는 문제입니다.
간단하게 생각나는 풀이 방법은 in을 사용해서 문자열 내부에 이미 있는지 없는지를 검사하고, 없다면 추가하는 방법이 생각나네요.
파이썬으로 문제를 풀어보겠습니다.
def solution(my_string):
# 빈 문자열 answer을 선언합니다.
answer = ''
# my_string의 요소들을 하나씩 탐색합니다.
for s in my_string:
# answer에 s 문자가 없다면
if s not in answer:
# answer에 추가합니다.
answer += s
return answer
중복 제거라는 점에서 set도 생각나기는 하는데, set은 순서가 없어서 원하는 대로 출력할 수가 없는 게 문제네요.
딕셔너리를 사용해서도 문제를 풀 수 있을 것 같습니다. 키 값은 중복이 없으니 상관 없겠네요.