728x90
1. 문제
2. 풀이
(1) 첫번째 풀이
function solution(s) {
var answer = "";
answer = s
.toLowerCase()
.split(" ")
.map((v) => v.replace(/^./, v[0].toUpperCase()))
.join(" ");
return answer;
}
런타임 에러 : replace가 런타임 에러를 일으킨거 같다.
(2) 두번째 풀이
function solution(s) {
var answer = "";
answer = s
.toLowerCase()
.split(" ")
.map((v) => v.split(""));
answer.forEach((el) => el.splice(0, 1, el[0].toUpperCase()));
answer = answer.map((v) => v.join("")).join(" ");
return answer;
}
런타임 에러 : 반복문이 너무 많아서 런타임에러가 뜬거 같다.
(3) 세번째 풀이
function solution(s) {
var answer = "";
answer = s
.toLowerCase()
.split(" ")
.map((v) => (v = v[0].toUpperCase() + v.slice(1)))
.join(" ");
return answer;
}
또 런타임 에러..
(4) 네번째 풀이
function solution(s) {
var answer = "";
answer = s.toLowerCase().split(" ");
for (let i = 0; i < answer.length; i++) {
if (answer[i]) {
answer[i] = answer[i][0].toUpperCase() + answer[i].slice(1);
}
}
return answer.join(" ");
}
성공 : 런타임 에러는 공백의 문제였던걸로 추측한다. 공백에 대한 조건을 넣어주니 성공했다.
(5) 다른사람 풀이 본 후
function solution(s) {
var answer = "";
answer = s
.split(" ")
.map((v) => v.charAt(0).toUpperCase() + v.substring(1).toLowerCase())
.join(" ");
return answer;
}
charAt(i)와 string[i]의 차이로 charAt으로 하면 공백까지 처리할수 있기 때문에 위의 함수가 런타임 에러를 일으키지 않는다.
charAt 참고
728x90
'개발 > 알고리즘' 카테고리의 다른 글
[코딩테스트] 최대공약수와 최소공배수 (0) | 2022.09.20 |
---|---|
[코딩테스트] 프로그래머스 문제 모음 (0) | 2022.09.20 |
[2022.09.13] 프로그래머스 문제 모음 (0) | 2022.09.13 |
[2022.09.12]프로그래머스 문제 모음 (0) | 2022.09.13 |
[프로그래머스 level 1 JS풀이] 내적 (0) | 2022.08.15 |