[프로그래머스/181874] A 강조하기
in Study / Coding Test
☑️ 문제
☑️ 풀이
첫 번째 풀이
- 반복문을 돌면서 인덱스가 짝수인지 홀수인지에 따라 해당 문자를 변경하였다.
- 이 방법은 시간이 너무 오래 걸려 다른 풀이를 보고 다시 풀어보았다.
//시간: 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)
- 특정 문자를 다른 문자로 변경한다.
- 모든
oldChar
이newChar
로 변경된다.
String str = "banana";
str = str.replace('a', 'A');
System.out.println(str); // "bAnAnA"
replace(CharSequence target, CharSequence replacement)
- 특정 문자열을 다른 문자열로 변경한다.
CharSequence
는String
을 포함하는 인터페이스이다.
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]
→ 모든 숫자를 찾아 제거한다.