[프로그래머스] 이상한 문자 만들기
본문 바로가기
코딩 테스트 연습/Programmers

[프로그래머스] 이상한 문자 만들기

by 은돌1113 2023. 8. 10.

문제 설명

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


제한사항

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

입출력 예

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

입출력 예 설명

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

문제풀이

  • 나의 풀이
    • split()으로 문자열을 자르고, 자른 문자열의 반환 배열을 map()을 사용하여 반복하면서, 각 단어별 문자열의 index가 짝/홀수에 따라 toUpperCase() = 대문자, toLowerCase() = 소문자로 반환해주었다.
function solution(s) {
  var answer = "";

  answer = s
    .split(" ") // ['try', 'hello', 'world']
    .map((string) => {
      return string
        .split("") // [['t', 'r', 'y'], ['h', 'e', 'l', 'l', 'o'], ['w', 'o', 'r', 'l', 'd']]
        .map(
          (char, i) => (i % 2 === 0 ? char.toUpperCase() : char.toLowerCase())
          // 짝수번째 문자열인 경우 대문자(toUpperCase())로, 홀수번째 문자열인 경우 소문자(toLowerCase())로 변환
        )
        .join(""); // 문자열 합치기
    })
    .join(" "); // 문자열 공백 넣어서 합치기

  return answer;
}

solution("try hello world");
  • 다른 분의 풀이
    • 문자열을 모두 대문자로 변환하고, replace()를 사용하여 짝/홀에 맞춰 대문자와 소문자로 변환하는 코드를 작성하셨는 데 가끔씩 다른 분들의 풀이를 볼 때마다 정규식 쓰신 거 보면 멋지다고 생각된다.. 므쪄요
function solution(s) {
  return s.toUpperCase().replace(/(\w)(\w)/g, function (a) {
    return a[0].toUpperCase() + a[1].toLowerCase();
  });
}

solution("try hello world");

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

댓글