[Today I Learned] Lv.2 JadenCase 문자열만들기

suwoncityboyyy·2023년 2월 12일
0
post-thumbnail

문제 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건

  • s는 길이 1 이상 200 이하인 문자열입니다.
  • s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
    • 숫자는 단어의 첫 문자로만 나옵니다.
    • 숫자로만 이루어진 단어는 없습니다.
    • 공백문자가 연속해서 나올 수 있습니다.

입출력 예

sreturn
"3people unFollowed me""3people Unfollowed Me"
"for the last week""For The Last Week"

풀이해석

파라미터가 String 타입이고 한문장에서 띄어쓰기가 있다.
띄어쓰기 기준으로 나눈 후 앞단어를 대문자로 바꿔야 할 것 같다.
split(" ")으로 잘라낸 후 test 변수에 할당한다.

  let array = [];
  let test = s.split(" "); // 	[ '3people', 'unFollowed', 'me' ]

나눠진 단어를 배열의 길이만큼 반복문을 돌린 후 각 인덱스의 값에 접근한다.
접근 후에 split으로 각 문자열을 한번 더 잘라낸다.

 for (let i = 0; i < test.length; i++) {
    let str = test[i].split("");

반복문 안에서 test[i] 즉 각 인덱스의 값에 문자열길이만큼 반복문을 돌린다.
조건문을 이용해서 0번째 인덱스는 모두 대문자로 만들고 그외에 값들은 소문자로 되게 if문을 이용했다.

  for (let j = 0; j < test[i].length; j++) {
      if (j === 0) {
        str[j] = str[j].toUpperCase();
      } else {
        str[j] = str[j].toLowerCase();
      }
    }

각 문자열 0번째 인덱스는 대문자로 바꼈을 것이다. 이제 이 쪼개진 문자열들을 join('')으로 다시 연결해주자.

     array.push(str.join(""));
  }

  return array.join(" ");
}

내가 푼 문제풀이

function solution(s) {
  let array = [];
  let test = s.split(" ");

  for (let i = 0; i < test.length; i++) {
    let str = test[i].split("");
    for (let j = 0; j < test[i].length; j++) {
      if (j === 0) {
        str[j] = str[j].toUpperCase();
      } else {
        str[j] = str[j].toLowerCase();
      }
    }
    array.push(str.join(""));
  }

  return array.join(" ");
}

profile
귀차나ㅣ

0개의 댓글