Algorithm - 이상한 문자 만들기

박태환·2021년 11월 1일
0

Algorithm

목록 보기
16/20
post-thumbnail

문제 설명

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

제한사항

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

입출력 예

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

나의 풀이

function solution(s) {
  const words = s.split(" ");

  return words.map((word) => {
      var answer = "";
      for (let i = 0; i < word.length; i++) {
        if (i % 2) {
          answer += word[i].toLowerCase();
        } else {
          answer += word[i].toUpperCase();
        }
      }
      return answer;
    }).join(" ");
}

풀이 설명

시저암호 만드는 것과 비슷하게 주어진 문자열의 소문자/대문자를 바꾸는 문제였다.
이번에도 map을 이용해 문제를 풀었다.
길이를 줄여보기 위해 i % 2 === 0 이라던가 i % 2 !== 0 이런 부분을 최대한 줄이고 간략하게 i % 2 로 줄였다.
처음엔 더 줄일게 없나 찾다가 예제만 보고 toLowerCase는 안붙여도 되겠지 싶어서 아무생각없이 뺐다가 나중에 호다닥 추가!

다른 사람의 풀이

function toWeirdCase(s){
  //함수를 완성해주세요
  return s.toUpperCase().replace(/(\w)(\w)/g, function(a){return a[0].toUpperCase()+a[1].toLowerCase();})

}

다른 사람의 풀이 설명

이런 정규식 표현을 볼 때 마다 정말 실전에서도 써먹는 것인지 궁금증이 들기 시작했다..!
아직은 신기하기만 한 풀이방법!

느낀 점

뭔가 암호?나 문자열 관련해서 문제가 나온다면 왠지 split과 join 은 단골로 나오는 느낌!

profile
mekemeke

0개의 댓글