[오늘의 문제] A로 B 만들기

shlim55·2025년 10월 30일

코딩테스트

목록 보기
163/223

출처: https://school.programmers.co.kr/learn/courses/30/lessons/120886?language=python3#

문제 설명
문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.

제한사항
0 < before의 길이 == after의 길이 < 1,000
before와 after는 모두 소문자로 이루어져 있습니다.
입출력 예
before after result
"olleh" "hello" 1
"allpe" "apple" 0

내가 작성한 코드문

def solution(before, after):
    
    # list = []
    
    sorted_before = sorted(before)
    sorted_after = sorted(after)
  
    if sorted_before == sorted_after:
        return 1
    else :
        return 0

트러블 슈팅
일단 요구사항 파악을 못했다.

거꾸로 뒤집은 결과만 after랑 같은지 확인했는데 그러면 안된다.

순서만 바꾸기 했을때 같아도 1을 반환해야 함

각각 before 변수, after 변수 둘다 정렬 했을때 같은지 확인 해야한다.

다른 사람의 풀이

def solution(before, after):
    return 1 if sorted(before)==sorted(after) else 0

두 문자열이 동일한 문자를 동일한 개수만큼 가지고 있는지를 확인
더 간략함

def solution(before, after):
    before = list(before)
    for i in after:
        try:
            del before[before.index(i)]
        except:
            return 0
    return 1

문자 제거를 이용한 풀이

after의 문자를 하나씩 순회하면서, 그 문자가 before 리스트에 존재하는지 확인한다.
존재하면 사용된 문자를 before 리스트에서 제거하는 방식이다.
i 문자가 before에 없으면 ValueError가 발생

profile
A Normal Programmer

0개의 댓글