본문 바로가기
코딩 테스트/알고리즘

알고리즘 76번 - JadenCase 문자열 만들기

by GREEN나무 2025. 2. 12.
728x90

URL : https://school.programmers.co.kr/learn/courses/30/lessons/12951

JS

문제

문제 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. , 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, sJadenCase로 바꾼 문자열을 리턴하는 함수, 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(" ");  // 다시 문자열로 합치기
}

참고

대소문자변환

https://likedev.tistory.com/entry/Javascript-%EB%8C%80%EB%AC%B8%EC%9E%90%EB%A5%BC-%EC%86%8C%EB%AC%B8%EC%9E%90%EB%A1%9C-%EC%86%8C%EB%AC%B8%EC%9E%90%EB%A5%BC-%EB%8C%80%EB%AC%B8%EC%9E%90%EB%A1%9C-%EB%B0%94%EA%BE%B8%EB%8A%94-%EB%B0%A9%EB%B2%95