프로그래머스 lv.1_ 이상한 문자 만들기
안녕하세요 Ayden 입니다.
오늘부터 프로그래머스 문제 1문제씩 풀고 분석해 보려고 합니다.
블로그에 올리기 부끄러운 풀이지만 왜 이렇게 풀었고 다른 사람은 어떻게 풀었는지 분석해 보면서 점점 나아지는 모습 보여드리겠습니다.
문제
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항
문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.입출력 예
입출력 예 설명
"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
내 소스코드
function solution(s) {
let arr = s.split("");
let count=0;
let answer="";
for(let i=0; i<arr.length; i++){
if(arr[i]===" "){
count=0;
answer+=arr[i];
} else if(count%2===0){
answer+=arr[i].toUpperCase();
count++;
} else if(count%2!==0){
answer+=arr[i].toLowerCase();
count++;
}
}
return answer;
}
let arr = s.split("")
String 으로 받은 문자열을 arr에 배열로 하나씩 저장합니다.
count
는 홀수(1, 3, 5, ...)와 짝수(0, 2, 4, ...)를 구분하는 flag 숫자로 지정하였습니다.
공백포함 각 문자가 저장되어 있는 arr를 for문을 돌아 하나씩 점검합니다.
if(arr[i]===" "){ count=0; answer+=arr[i]; }
공백을 만나면 count를 0으로 초기화 해주고 공백을 그대로 answer에 넣습니다.
else if(count%2===0){ answer+=arr[i].toUpperCase(); count++; }
그렇게 count가 짝수라면 arr[i]에 있는 요소를 대문자로 변환해 answer에 넣은 후 count를 증가 시킵니다. 증가된 count는 홀수 또는 공백을 만나 0이 됩니다.
else if(count%2!==0){ answer+=arr[i].toLowerCase(); count++; }
count가 홀수라면 arr[i]에 있는 요소를 소문자로 변환해 answer에 넣은 후 count를 증가 시킵니다.
다른 사람이 푼 코드
function toWeirdCase(s){ return s.toUpperCase(). replace(/(\w)(\w)/g, function(a){ return a[0].toUpperCase()+a[1].toLowerCase(); } ) }
코드 길이가 짧은 게 무조건 더 좋다고 볼 수 없지만, 제 코드에 비해 간결하게 푸신 것 같아 분석해보려고 합니다.
s.toUpperCase()
로 받아 온 문자열을 대문자로 변환시킨 다음 문자열 변환 함수인replace
를 사용했습니다. 나란히 붙어있는 두 문자를 뜻하는 정규식 표현으로/(\w)(\w)/g
사용했습니다.function(a){ return a[0].toUpperCase()+a[1].toLowerCase(); }
a 는 나란히 붙어 있는 두 문자이며, 두 문자 중 첫 번째를 대문자 두 번째를 소문자로 표현했습니다.
제가 완벽히 이해한지는 모르겠으나, 제 코드 설명 보다 더 간결한 것 같죠? ㅎㅎ
Author And Source
이 문제에 관하여(프로그래머스 lv.1_ 이상한 문자 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@aydenote/프로그래머스-lv.1-이상한-문자-만들기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)