728x90
URL : https://school.programmers.co.kr/learn/courses/30/lessons/12951
JS
문제
문제 설명
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
s는 길이 1 이상 200 이하인 문자열입니다.
s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
숫자는 단어의 첫 문자로만 나옵니다.
숫자로만 이루어진 단어는 없습니다.
공백문자가 연속해서 나올 수 있습니다.
입출력 예
s | return |
"3people unFollowed me" | "3people Unfollowed Me" |
"for the last week" | "For The Last Week" |
계획
문자열을 공백으로 잘라 단어의 배열로 만들기
각 단어(문자열)를 배열로 자르고 맨 앞 문자를 대문자로 바꾼다
문자배열을 합쳐 단어로 만든다
단어 사이에 공백을 두고 합쳐 문자열을 만들고 반환한다.
참고, 풀이
소문자를 대문자로 변환: toUpperCase()
slice(1)는 인덱스 1부터 문자열 끝까지 가져오는 역할
답
function solution(s) {
// 문자열을 공백 기준으로 나누어 단어 배열을 만든다
let arrStr = s.split(" ").map((str) => {
if (str.length === 0) return ""; // 공백 문자열 유지
// 첫 글자는 대문자로, 나머지는 소문자로 변환
return str[0].toUpperCase() + str.slice(1).toLowerCase();
});
// 원래 공백을 유지하면서 다시 문자열로 변환
return arrStr.join(" ");
}
코드 간략화하기
const solution = s => s.replace(/\b\w/g, c => c.toUpperCase()).replace(/\B\w/g, c => c.toLowerCase());
다른사람 답
function solution(s) {
return s
.split(" ") // 공백 기준으로 단어 분할
.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) // 첫 글자는 대문자, 나머지는 소문자로 변환
.join(" "); // 다시 문자열로 합치기
}
참고
대소문자변환
'코딩 테스트 > 알고리즘' 카테고리의 다른 글
알고리즘 78번 - 피보나치 수 (0) | 2025.02.14 |
---|---|
알고리즘 77번 - 이진 변환 반복하기 (0) | 2025.02.13 |
알고리즘 74번 - 신고 결과 받기 (0) | 2025.02.10 |
알고리즘 73번 - 공원 산책 (0) | 2025.02.07 |
알고리즘 72번 - 달리기 경주 (0) | 2025.02.06 |