JAVA SCRIPT/코딩테스트

프로그래머스 :: 이상한 문자 만들기 (JS)

ㅈㅣㄴ 2023. 12. 11. 15:00
프로그래머스 :: 이상한 문자 만들기 (JS)

 

문제 설명
문자열 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, result = "") {
    for (let i of s.split(" ")) {
      for (let j = 0; j < i.length; j++) {
        if (j % 2 === 0) {
          result += i[j].toUpperCase();
        } else {
          result += i[j].toLowerCase();
        }
      }
      result += " ";
    }
    return result.substr(0,result.length-1);
  }​

 

  • 문자가 끝날 때마다 공백을 넣어주다보니 마지막 문자가 공백으로 끝나는 결과가 발생하였다.
  • 그래서 substr 함수를 이용하여 마지막 문자를 제외한 문자열을 리턴하였다.
  • i[j] % 2 값이 0 이면 (짝수) 대문자로 변환하고 0 이 아니면 (홀수) 소문자로 변환하였다.

 

다른 사람의 풀이
function toWeirdCase(s){
  return s.toUpperCase().replace(/(\w)(\w)/g, function(a){return a[0].toUpperCase()+a[1].toLowerCase();})
}​

 

  • 정규 표현식을 이용한 코드인 듯 하다.