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();}) }
- 정규 표현식을 이용한 코드인 듯 하다.