중복된 문자 제거

2024. 9. 3. 18:00코딩테스트 입문

https://school.programmers.co.kr/learn/courses/30/lessons/120888

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명
문자열 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은 순서가 없어서 원하는 대로 출력할 수가 없는 게 문제네요.

딕셔너리를 사용해서도 문제를 풀 수 있을 것 같습니다. 키 값은 중복이 없으니 상관 없겠네요.

'코딩테스트 입문' 카테고리의 다른 글

가까운 수  (0) 2024.09.05
삼각형의 완성조건 (1)  (0) 2024.09.04
k의 개수  (0) 2024.09.02
A로 B 만들기  (0) 2024.09.01
이진수 더하기  (0) 2024.08.31