
처음에는 문제 그대로 풀고자 하였으나 제한 사항 1 ≤ myString ≤ 100,000 을 확인하고 반복문으로 myString을 전부 도는 것 보다 a~k까지만 도는 것이 더 효율적이라 판단하여 아래와 같이 해결.
def solution(myString):
for c in "abcdefghijk":
myString = myString.replace(c, "l")
return myString
이후 아래와 같이 myString의 char를 모두 탐색하는 방식으로 작성하여 테스트해보니 위의 방식이 더 빠름을 확인할 수 있었다.
def solution(myString):
return ''.join([ c if c > 'l' else 'l' for c in myString])
주어진 myString에 따라 후자가 더 빠를 수도 있을 것으로 예상했으나 모든 테스트 케이스 전자가 더 빨랐다.
다른 사람의 풀이에서 translate를 이용한 풀이를 발견했다.
replace를 사용한 방식과 속도가 유사했으나 가독성면에서는 translate를 사용한 방식이 더 좋아보였다.
def solution(myString):
return myString.translate(str.maketrans('abcdefghijk', 'lllllllllll'))
💡 str.maketrans(x, y, z) : translate 함수에서 사용될 매핑 객체를 반환한다.
x : 찾을 문자. 문자열을 검색하는 것이 아니라 문자열 내 하나 하나의 문자를 검색한다.
y : 대체할 문자. 찾을 문자와 동일한 length를 가져야하며 각 index에 맞게 매핑된다.
z : optional, 제거할 문자
'Algorithm' 카테고리의 다른 글
[Programmers] 12985.py 예상 대진표 (0) | 2023.07.02 |
---|---|
[Programmers] 42747.py H-Index (0) | 2023.06.30 |
[Programmers] 120910.py 세균 증식 (0) | 2023.06.22 |
[Programmers] 176963.py 추억 점수 (0) | 2023.06.11 |
[Programmers] 120841.py 점의 위치 구하기 (0) | 2023.06.11 |