[프로그래머스/181874] A 강조하기

☑️ 문제

프로그래머스 181874

☑️ 풀이

첫 번째 풀이

  • 반복문을 돌면서 인덱스가 짝수인지 홀수인지에 따라 해당 문자를 변경하였다.
  • 이 방법은 시간이 너무 오래 걸려 다른 풀이를 보고 다시 풀어보았다.
//시간: 17.90ms
//메모리: 82.5MB

class Solution {
    public String solution(String myString) {
        String answer = "";
        for (int i = 0; i < myString.length(); i++) {
            if (myString.charAt(i) == 'a') {
                answer += "A";
            } else if (myString.charAt(i) != 'A' && Character.isUpperCase(myString.charAt(i))) {
                answer += Character.toLowerCase(myString.charAt(i));
            } else {
                answer += myString.charAt(i);
            }
        }
        return answer;
    }
}

두 번째 풀이

  • 먼저 소문자로 다 변경한 뒤 소문자 a 를 대문자 A 로 바꿔준다.
  • 시간이 엄청 단축되었다.
//시간: 0.02ms
//메모리: 89.9MB

class Solution {
    public String solution(String myString) {
        myString = myString.toLowerCase();
        myString = myString.replace('a', 'A');
        return myString;
    }
}

☑️ 문법 정리 - replace()

replace(char oldChar, char newChar)

  • 특정 문자를 다른 문자로 변경한다.
  • 모든 oldCharnewChar 로 변경된다.
String str = "banana";
str = str.replace('a', 'A'); 
System.out.println(str); // "bAnAnA"

replace(CharSequence target, CharSequence replacement)

  • 특정 문자열을 다른 문자열로 변경한다.
  • CharSequenceString 을 포함하는 인터페이스이다.
String str = "java is fun";
str = str.replace("java", "Python"); 
System.out.println(str); // "Python is fun"

replaceAll(String regex, String replacement)

  • replace 와 유사하지만, 정규표현식 (Regular Expression, RegEx) 을 사용할 수 있다.
  • regex : 바꿀 문자열의 정규식(패턴)
  • replacement : 대체할 문자열

기본 사용법

String str = "banana apple avocado";
str = str.replaceAll("a", "@");
System.out.println(str); // "b@n@n@ @pple @voc@do"
  • replace(’a’, ‘@’) → 문자 ‘a’ 만 변경 가능하다.
  • replaceAll(”a”, “@”) → 정규식 “a” 을 사용 가능하다.

여러 개의 특정 문자 바꾸기

String str = "banana apple avocado";
str = str.replaceAll("[aeiou]", "*");
System.out.println(str); // "b*n*n* *ppl* *v*c*d*"
  • [aeiou]a, e, i, o, u 중 하나라도 포함되면 * 로 변경한다.

숫자 제거하기

String str = "abc123def456";
str = str.replaceAll("[0-9]", "");
System.out.println(str); // "abcdef"
  • [0-9] → 모든 숫자를 찾아 제거한다.

© 2021. All rights reserved.

yaejinkong의 블로그