문제 풀이/프로그래머스

프로그래머스 lv0 l로 만들기

춘핑이 2023. 8. 14. 14:38

문제

알파벳 소문자로 이루어진 문자열 myString이 주어집니다. 알파벳 순서에서 "l"보다 앞서는 모든 문자를 "l"로 바꾼 문자열을 return 하는 solution 함수를 완성해 주세요. '알파벳 엘이다.'

풀이

단순하게 char배열로만들어서 풀었다.

public class i로만들기 {
    public String solution(String myString) {
        char[] arr = myString.toCharArray();

        for (int i = 0; i < arr.length; i++) {
            if (arr[i] < 'l') {
                arr[i] = 'l';
            }
        }
        String answer = new String(arr);

        return answer;
    }
}

다른사람 풀이

myString.replaceAll("[^l-z]", "l");

정규식을 통해 풀었다.
내 것중에 오래걸리는게 있어서 이걸 넣어보기도 했는데
이게 더 오래걸린다.
하지만, 알고리즘 성능에는 그다지 좋지가 않습니다. 그 이유는 "백트래킹" 때문이라고 한다.
정규식은 왼쪽에서 오른쪽으로 탐색을 하는데 100% 매칭 되지 않으면 다시 뒤로 되돌아가면서 매칭을 시도한다고한다.
짧다고 좋은 것은 아닌듯 하다.