프로그래머스 | 특정 문자 제거하기 [파이썬 python]

2023. 3. 4. 15:05·Algorithm/프로그래머스
 

프로그래머스

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

programmers.co.kr

 

코드

def solution(my_string, letter):
    answer = ''
    lms = list(my_string)
    
    for i in lms:
        if i == letter:
            lms.remove(letter)
            
    answer = ''.join(lms)
    return answer

 

my_string에서 letter를 제거하는 문제이다.

my_string이 리스트가 아닌 문자열로 주어지기 때문에 remove를 사용하려고 list로 바꿔 letter를 제거하였다.

하지만 예시는 모두 통과하였으나 제출하면 2개의 테스트 케이스를 통과하지 못하였다.

이전에 올렸던 내용이 생각나 리스트에서 remove를 사용한 게 문제인지 print를 하나씩 찍어보았다.

위 사진은 BCBdbe에서 B를 제거하는 예시이다.

for문에서 i를 출력해보니 B 다음에 B가 출력되는 것을 볼 수 있다.

이는 C를 건너뛰었다는 뜻이고, remove를 하면서 원본 lms에 손상이 가고 있어 발생하는 현상임을 알 수 있었다.

따라서 위 방식으로 문제를 해결하기 위해서는 for문에서 lms를 lms[:]로 바꿔 주어야 원본에는 손상가지 않으면서 lms의 모든 원소를 순차적으로 letter와 같은지 비교할 수 있다.

 

다른 방법 - 1

def solution(my_string, letter):
    answer = ''
    
    for i in my_string:
        if i != letter:
            answer += i
            
    return answer

letter와 다른 문자열만 answer에 추가하여 결과를 얻을 수도 있다.

 

다른 방법 - 2

def solution(my_string, letter):
    answer = ''
    answer = ''.join([i for i in my_string if i not in letter])
    return answer

리스트 컴프리헨션을 사용하여 코드를 간결화시킬 수 있다.

첫 번째 방법에서 실패를 계속하여 리스트 컴프리헨션으로도 풀어보았는데, 실제로 해당 문제에서 가장 많은 좋아요를 받고 있는 코드였다.

 

저작자표시 (새창열림)
'Algorithm/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 | 공 던지기 [파이썬 python]
  • 프로그래머스 | 2차원으로 만들기 [파이썬 python]
  • 프로그래머스 | 최빈값 구하기 [파이썬 Python]
  • 프로그래머스 | 분수의 덧셈 [파이썬 Python]
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (46)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
프로그래머스 | 특정 문자 제거하기 [파이썬 python]
상단으로

티스토리툴바