231221 TIL

chillakilla·2023년 12월 22일

이상한 문자 만들기

Q :
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다.
각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

제한사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

입출력 예

솔루션 코드

<script>
function solution(s) {
  let answer = "";
  let count = 0;

  for (let i = 0; i < s.length; i++) {
    if (s[i] === " ") {
      count = 0;
      answer += " ";
      // 지문에서 각 단어는 하나 이상의 공백문자로 구분되어있다고 했음.
      // 그렇기에 공백 문자를 추가해줘야함.
      // 입력 받은 s에서 공백 문자가 있으면 count를 0으로 만들고
      // answer에 공백문자를 추가시킴.
    } else {
      if (count % 2 === 0) {
        answer += s[i].toUpperCase();
      } else {
        answer += s[i].toLowerCase();
      }
      // 공백 문자가 아닐 경우에는 짝수인지 홀수인지 판단함.
      // 짝수라면 입력 받은 s의 인덱스를 대문자로, 홀수라면 소문자로 변환.
      count++;
      // 그렇게 공백 문자가 아닌 것들을 추가해나감.
    }
  }

  return answer;
}
</script>
  • 최종적으로 반환될 answer의 초기값을 빈 문자열로 설정.
  • 짝수 홀수 판단에 사용될 count의 초기값을 0으로 설정.
  • 지문에서 각 단어는 하나 이상의 공백 문자로 구분되어 있다고 했으니 공백문자 추가를 해야함.
  • 입력 받은 s 에서 공백 문자가 있을 시, count는 0으로 만들지만, answer에는 추가시켜줌.
  • 공백 문자가 아닐 경우, 입력 받은 s 문자열을 다 해체해 짝수 홀수로 구분.
  • 짝수라면 입력 받은 s의 i(인덱스)를 대문자로, 홀수라면 소문자로 변환.
  • 그렇게 공백 문자가 아닌 것들을 추가해나감.


도중에 20분 정도 막혔었다.

"TrY HeLlO WoRlD"에서 "TrY"는 분명 첫번째, 세번째가 대문자인데 왜 짝수를 대문자로 변환하라고 하지????
라는 생각 때문에 막힌 거다.
근데 뭐 지문에도 써져있었고, 코딩하는 사람이라면 알고 있어야 하는 사실에 대해 내가 까먹고 있었던 거다.
"TrY"에서 T 는 0번째 Y는 2번째인데.....
하...
나는 멍청이다

profile
꾸준하려 하는 쉽덕놈

0개의 댓글