[코딩 테스트 연습 입문] A로 B 구하기
문제
문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.
❗제한사항❗
- 0 < before의 길이 == after의 길이 < 1,000
- before와 after는 모두 소문자로 이루어져 있습니다.
입출력 예
입출력 예 설명
입출력 예 #1
- "olleh"의 순서를 바꾸면 "hello"를 만들 수 있습니다.
입출력 예 #2
- "allpe"의 순서를 바꿔도 "apple"을 만들 수 없습니다.
✔풀이
def solution(before, after):
for alphabet in range(0, len(before)):
if before[alphabet] in after:
after=after.replace(before[alphabet],'',1)
if after=="":
answer= 1
else:
answer= 0
return answer
📝설명
문자열 before의 순서를 바꿨을 때, after을 만들 수 있다면 1을, 없다면 0을 return시켜야 한다.
for문을 통해서 before의 알파벳을 하나씩 꺼내서, 그 알파벳에 after에 있다면 after의 해당 알파벳을 제거해나가도록 했다.
이 때 if문에서 사용한 replace()에 첫번쨰에는 빼고 싶은 문자를 넣었고, 그 문자를 제거하고 싶기 때문에 두번째에는 ''을 넣었다. 마지막으로 after에 제거하고싶은 문자가 여러개일 경우에, 하나만 삭제하기 위해서 1을 넣었다.
for문을 다 돌렸을 떄, after이 빈 문자열이라면 before과 after의 구성알파벳이 같다고 볼 수 있다.
따라서 return으로 1을 할 수 있도록 answer에 1을 저장한다.
반대의 경우에는 after이 비어있지 않다는 건데, 이는 before과 after의 구성 알파벳이 다르다는 말과 같고, answer에 0을 저장한다.
👑모범 답안
🔎 sorted를 통해 알파벳 순으로 정렬하고, before과 after이 같다면 1을, 다르다면 0을 호출하도록 한다.
👀느낀 점
: replace()를 제대로 사용한 건 처음인 것 같다.
sorted()로 하면 문제를 더 쉽게 풀 수 있었다 우하하
💻 문제 출처