문제
모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자로 리턴하여라 단 첫 문자가 알파벳이 아닐 때는 이어지는 알파벳은 소문자로 쓴다
나의 풀이 (틀린 해답 1)
function solution(s) {
return s.split(" ").map(word =>
word[0].toUpperCase() + word.slice(1).toLowerCase()
).join(" ");
}
- split(" ") : 문자열 s를 공백을 기준으로 분리하여 배열로 반환
- map() : 나눠진 문자열 배열의 각 요소에 대해 주어진 함수를 호출하고 새로운 배열로 반환하다
- 각 요소의 첫번째 [0] 글자는 대문자화 시키고 그 나머지 slice 두번째 글자부터는 소문자화 시킨다
- join(" ") : 배열의 모든 요소를 하나의 문자열로 결합
나의 풀이 2
function solution(s) {
return s.split(" ").map(word => {
if(word === "") {
return "";
}else {
return word[0].toUpperCase() + word.slice(1).toLowerCase();
}
}).join(" ");
}
- 공백 부분도 처리 해줬더니 성공
다른 풀이
function solution(s) {
return s.split(" ").map(v => v.charAt(0).toUpperCase() + v.substring(1).toLowerCase()).join(" ");
}
- charAt 메서드를 사용하여 문자열에서 문자를 가져오는 데 더 명시적으로 표기한다 string[i] 와 charAt(i)의 차이를 알아야한다.
- 왜 s.toLowerCase().split(" ").map(v => v[0].toUpperCase() + v.substring(1)).join(" ")는 안되고 charAt은 되는 걸까
- 문제를 다시 보면 "s는 알파벳과 공백문자"" 로 이루어져 있습니다" 라고 되어있는데 이때 빈 문자열인데 (undefined) 0번째 인덱스에 접근 [0]! 한다는게 에러가 나서 틀린거 같다
- https://phuoc.ng/collection/this-vs-that/string-char-at-vs-string-bracket-notation/
string.charAt(i) vs string[i] — Phuoc Nguyen
phuoc.ng
'기초다지기 > JS 코딩테스트' 카테고리의 다른 글
javascript 두 수의 최대공약수와 최소공배수 구하기 (1) | 2023.10.27 |
---|---|
javascript 알파벳 배열을 사용해 만들수 있는 단어의 다른 배열 존재 여부 확인하기 (0) | 2023.10.27 |
javascript 이차원 정수 배열 행/열 크기 동일하게 만들기 (0) | 2023.10.25 |
javascript 문자열로 된 숫자들의 최대값과 최소값 (1) | 2023.10.24 |
javascript 이차원배열의 덧셈 (0) | 2023.10.24 |