문자열 myString이 주어집니다. myString에서 알파벳 "a"가 등장하면 전부 "A"로 변환하고, "A"가 아닌 모든 대문자 알파벳은 소문자 알파벳으로 변환하여 return 하는 solution 함수를 완성하세요.
1 ≤ myString의 길이 ≤ 20
myString은 알파벳으로 이루어진 문자열입니다.
myString | result |
---|---|
"abstract algebra" | "AbstrAct AlgebrA" |
"PrOgRaMmErS" | "progrAmmers" |
입출력 예 설명
입출력 예 #1
0번, 5번, 9번, 15번 인덱스의 "a"는 소문자이므로 전부 대문자로 고쳐줍니다.
다른 문자들은 전부 "a"가 아닌 소문자이므로 바꾸지 않습니다.
따라서 "AbstrAct AlgebrA"를 return 합니다.입출력 예 #2
0번, 2번, 4번, 6번, 8번, 10번 인덱스의 문자들은 "A"가 아닌 대문자이므로 전부 소문자로 고쳐줍니다.
5번 인덱스의 "a"는 소문자이므로 대문자로 고쳐줍니다.
다른 문자들은 전부 "a"가 아닌 소문자이므로 바꾸지 않습니다.
따라서 "progrAmmers"를 return 합니다.
function solution(myString) {
let str = myString.toLowerCase()
return str.replaceAll("a", "A")
}
전부 소문자(myString.toLowerCase()
)로 변경한 str 변수를 선언해 준다.
str을 replaceAll()
메서드를 사용해 str.replaceAll("a", "A")
a인 부분을 전부 A로 변경해 주었다.
초반에는 for문이나 배열로 반환 후 map 메서드를 사용할까 했지만
replaceAll이 특정 문자를 변경해주는걸 생각해 적용했다.
function solution(myString) {
return [...myString].map(str => ['a', 'A'].includes(str)? 'A' : str.toLowerCase()).join('');
}
function solution(myString) {
var answer = '';
return [...myString].map(e => e == 'a' || e == "A" ? "A" : e.toLowerCase()).join("");
}
둘 다 map 메서드를 사용했지만 includes(), 삼항 연산자 정도의 차이가 있는거 같다.
자칫 잘못하면 복잡해 졌을 코드를
여러 메서드를 이용해 간단하게 푼거 같다.
다른 사람들의 코드를 보고 내가 초반에 생각했던 map메서드는 어떤식으로 작성하셨는지도
같이 볼 수 있어 좋았다.