문제 설명
문자열 myString이 주어집니다. myString에서 알파벳 "a"가 등장하면 전부 "A"로 변환하고, "A"가 아닌 모든 대문자 알파벳은 소문자 알파벳으로 변환하여 return 하는 solution 함수를 완성하세요.
제한사항
1 ≤ myString의 길이 ≤ 20 myString은 알파벳으로 이루어진 문자열입니다.
나의 코드
class Solution {
public String solution(String myString) {
StringBuilder result = new StringBuilder();
for(int i = 0; i < myString.length(); i++) {
char c = myString.charAt(i);
if(c == 'a') {
result.append('A');
} else if (Character.isUpperCase(c)) {
result.append(Character.toLowerCase(c));
} else {
result.append(c);
}
}
return result.toString();
}
}
StringBuilder
를 사용해서 해결해보려 했으나, 코드 실행
만 통과하고 제출 후 채점하기
에서 테스트 1개 실패.. 뭐가 잘못됐을까 🤔
class Solution {
public String solution(String myString) {
char[] result = new char[myString.length()];
for(int i=0; i<result.length; i++) {
char c = myString.charAt(i);
if(c=='a') {
result[i] = 'A';
} else if(Character.isUpperCase(c)) {
result[i] = Character.toLowerCase(c);
} else {
result[i] = c;
}
}
return new String(result);
}
}
이번엔 char 배열
을 통해 해결해보려고 했으나 또 같은 테스트 실패가 발생한다... 🤯
class Solution {
public String solution(String myString) {
myString = myString.toLowerCase();
myString = myString.replace("a", "A");
return myString;
}
}
와.......... 이렇게 간단했다고?
느낀 점
문자열들의 각각의 문자마다 돌면서 바꾼다는 거에 초점을 가지고 접근하니 자꾸 어려운 코드가 되고 풀 수 없었다... 단순하게 생각하여 toLowerCase()
메소드를 통해 우선 소문자로 다 바꿔버린 후, replace()
메소드를 이용해 a
를 A
로 바꿔주면 끝.......... 내 멘탈 ㅠㅠㅠㅠ
+) replace()
에 관해 내가 예전에 써둔 글을 참고하면 좋겠다.
https://velog.io/@nacseo/replace-vs.-replaceAll