프로그래머스 Lv.0 A 강조하기

J·2023년 6월 1일
0

programmers

목록 보기
5/33

문제 설명

문자열 myString이 주어집니다. myString에서 알파벳 "a"가 등장하면 전부 "A"로 변환하고, "A"가 아닌 모든 대문자 알파벳은 소문자 알파벳으로 변환하여 return 하는 solution 함수를 완성하세요.

제한사항

  • 1 ≤ myString의 길이 ≤ 20
    • myString은 알파벳으로 이루어진 문자열입니다.

입출력 예

myStringresult
"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 합니다.

풀이

  1. 문자열 각각 분리.
  2. 분리한 문자 조건 확인 후 변경.
  3. 변경한 문자 재조합.

코드

function solution(myString) {
    return myString
        .split("")
        .map(v => v === "a" ? v.toUpperCase() : v === v.toUpperCase() ? v.toLowerCase() : v)
        .join("");
}
  • 해당 코드로 솔루션 제출 시 5개 테스트 중 1개 실패함.
  • 대문자 "A"에 대한 처리를 따로 해주지 않았기 때문임.

변경한 코드

function solution(myString) {
    return myString
        .split("")
        .map(v => v === "a" ? v.toUpperCase() : v !== "A" && v === v.toUpperCase() ? v.toLowerCase() : v)
        .join("");
}

다른 사람의 코드

const solution = s => s.toLowerCase().replaceAll('a','A');

생각

  • 7점이 나왔길래 나름 잘 풀었나 생각했는데 왠걸. 문자열을 전부 소문자로 변경 후 "a"만 대문자 "A"로 변경했으면 됐음.
  • 갈 길이 멀다.
profile
벨로그로 이사 중

0개의 댓글

관련 채용 정보