Recent Posts
Recent Comments
Link
Today
Total
01-07 03:04
관리 메뉴

채린씨의 티스토리

[Programmers] Level1 - 이상한 문자 만들기(JavaScript) 본문

코딩테스트 대비

[Programmers] Level1 - 이상한 문자 만들기(JavaScript)

채린씨 2022. 4. 7. 08:02

문제 설명

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

 

제한 사항

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

 

입출력 예

s return
"try hello world" "TrY HeLlO WoRlD"

 

입출력 예 설명

"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.

 


나의 풀이

// 원래 문자가 모두 소문자여야 할 이유는 없다는 사실,
// 공백이 하나 이상일 수 있다는 사실을 빠뜨려서 조금 오래 생각한 문제..!
function solution(s) {
  let result = "";
  let flag = true;
  for (let i = 0; i < s.length; i++) {
    if (s[i] === " ") {
      flag = false;
      result += s[i];
    } else if (flag) {
      result += s[i].toUpperCase();
    } else {
      result += s[i].toLowerCase();
    }
    flag = !flag;
  }
  return result;
}

  

좋았던 다른 사람의 풀이

1. 정규식으로 연속된 두 문자를 표현한 점이 인상깊었다.
2. 왜 문자열 전체를 대문자로 변환하고 시작했을까.. 라고 생각했는데, 각 단어의 길이가 홀수일 경우 마지막 문자를 고려한 것이었다.
아이디어가 참신했던 풀이! 

function solution(s) {
  return s
    .toUpperCase()
    .replace(/(\w)(\w)/g, (a) => a[0].toUpperCase() + a[1].toLowerCase());
}

 


프로그래머스 문제들의 자바스크립트 풀이가 궁금하신가요? 아래 링크를 클릭해보세요!

https://programmers-solution-bank.netlify.app/

 

프로그래머스 해설 은행

 

programmers-solution-bank.netlify.app

 

 

 

Comments