728x90
반응형
문제설명
문제분석
이 문제는 각 문자를 탐색하면서 조건에 부합하는지 확인하는 문제입니다. 여러 형태로 접근할 수 있겠지만, 저는 한 단어의 구분을 공백으로 보기로 했습니다.
- 각 문자를 탐색한다.
- 문자가 공백이 아닌 경우, strArr에 현재의 문자를 추가한다.
- 문자가 공백인 경우, strArr.join("") + 공백을 answer에 추가한다.
- 이때 strArr.length가 0이면 toUpperCase를 한다.
- 이때 strArr.length가 0이 아니면 toLowerCase를 한다.
- 반복문이 끝난 후에도 strArr에 담겨있는 단어가 있다면 answer에 추가한다.
요약했으니, 코드를 짜보겠습니다.
이해하기 쉽게 코드작성하기
function solution(s) {
let answer = "";
const strArr = [];
for(const ch of s) {
if(ch === " ") {
answer += strArr.join("") + " ";
strArr.length = 0;
continue;
}
if(strArr.length === 0) {
strArr.push(ch.toUpperCase());
} else if (strArr.length > 0) {
strArr.push(ch.toLowerCase());
}
}
if(strArr.length > 0) {
answer += strArr.join("");
}
return answer;
}
코드 설명
분석한 대로 작성한 코드라 부가 설명은 없습니다. 위 코드와 같은 로직을 메소드를 이용해 깔끔하게 나타내면 다음과 같습니다.
function solution(s) {
const [first, remain] = [s[0].toUpperCase(), s.slice(1)];
return remain
.split("")
.reduce((a,c) => {
if(c === " ") {
a += c;
} else if(a[a.length - 1] === " ") {
a += c.toUpperCase();
} else {
a += c.toLowerCase();
}
return a;
}, first);
}
728x90
반응형
'Practice for coding test' 카테고리의 다른 글
프로그래머스 - Level 1. 로또의 최고 순위와 최저 순위 / JavaScript (js) (0) | 2023.02.18 |
---|---|
프로그래머스 - Level 1. 햄버거 만들기 / JavaScript (js) (0) | 2023.02.17 |
프로그래머스 - Level 1. 소수 만들기 / JavaScript (js) (0) | 2023.02.15 |
프로그래머스 - Level 1. 콜라 문제 / JavaScript (js) (0) | 2023.02.14 |
프로그래머스 - Level 1. 행렬의 덧셈 / JavaScript (js) (0) | 2023.02.13 |