728x90
문제 설명
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다.
단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 사항
- s는 길이 1 이상 200 이하인 문자열입니다.
- s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
- 숫자는 단어의 첫 문자로만 나옵니다.
- 숫자로만 이루어진 단어는 없습니다.
- 공백문자가 연속해서 나올 수 있습니다.
문제 풀이 방법
- 내가 작성했던 코드가 런타임 에러가 나는 이유는 split(' ')를 하게 되면 공백으로 이루어진 문자에서 공백로 이루어진 문자열이 생성되며, 이는 split 동작시 배열 인덱스로 접근하게되면 undefined를 반환하므로 toUpperCase에서 런타임 에러가 발생하게 된다.
- 그렇다면 방법은 charAt() 혹은 substr()이다.
이유는 인덱스로 접근하는 [] 방식은 빈 문자를 만나게 되면 undefined를 반환하게 되지만,
charAt()이나 substr()은 해당 인덱스에 빈 문자열이 있으면 빈 문자열이 반환된다. - 그리하여 빈 문자열을 반환해 진행하게 되면 런타임 에러를 잃으키지 않고 charAt()이나 substr()을 사용해 코드를 작성하면된다.
내가 작성한 코드
const solution = (s) => {
return s
.split(' ')
.map((e) => e.substr(0,1).toUpperCase() + e.substr(1).toLowerCase())
.join(' ');
// 런타임 에러 코드
// return s
// .split(' ')
// .map((e) => e[0].toUpperCase() + e.slice(1).toLowerCase())
// .join(' ');
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
2Level / 2018 KAKAO BLIND RECRUITMENT / [1차] 프렌즈4블록 (0) | 2023.05.15 |
---|---|
1Level / 연습문제 / 제일 작은 수 제거하기 (0) | 2023.05.12 |
1Level / 연습문제 / 핸드폰 번호 가리기 (0) | 2023.02.05 |
1Level / 연습문제 / 숫자 문자열과 영단어 (0) | 2022.12.30 |
1Level / 연습문제 / 가운데 글자 가져오기 (0) | 2022.12.23 |