문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
sreturn
"try hello world" | "TrY HeLlO WoRlD" |
입출력 예 설명
"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
<아이디어>
index를 하나 두고 공백이 나올때마다 0으로 초기화 -> 단어의 홀/짝 구별용
그리고 하나씩 읽어가면서 변환하여 answer에 저장
<내 코드>
function solution(s) {
let answer = '';
let index = 0;
for(let i =0; i < s.length; i++){
if(s[i] ===" ") {
index = 0;
answer += " ";
}
else {
if(index%2 === 0) {
//짝
answer += s[i].toUpperCase();
}else{
//홀
answer += s[i].toLowerCase();
}
index++;
}
}
return answer;
}
<다른 분 코드>
// #1
function toWeirdCase(s){
return s.toUpperCase().replace(/(\w)(\w)/g, function(a){return a[0].toUpperCase()+a[1].toLowerCase();})
}
// #2
function toWeirdCase(s){
var result = "";
for(var word of s.split(" ")) {
for(var i in word) {
result += word[i][parseInt(i) % 2 == 0 ? "toUpperCase" : "toLowerCase"]();
}
result += " ";
};
return result.slice(0, -1);
}
#1 코드는 정규화를 이용한 코드. 맨처음 아이디어로 생각나긴 했지만 이게 더 구현이 빠를듯하여 안씀.
#2 코드는 함수 호출이 특이하여 가져옴. 실무에서도 해당하는 함수호출을 써본 적이 있어서 이해는 가는데,, 왜 문제 풀땐 생각이 안날까 하는 안타까움..
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 2021 KAKAO BLIND RECRUITMENT -> 순위 검색 - 자바스크립트 (2) | 2021.03.17 |
---|---|
[프로그래머스] 다음 큰 숫자 - 자바스크립트 (0) | 2021.03.12 |
[프로그래머스] 2017팁스다운 -> 짝지어 제거하기 - 자바스크립트 (0) | 2021.02.28 |
[프로그래머스] Summer/Winter Coding(2019) -> 멀쩡한 사각형 - 자바스크립트 (0) | 2021.02.28 |
[프로그래머스] 신규 아이디 추천 , 자바스크립트- 2021 KAKAO BLIND RECRUITMENT (0) | 2021.02.27 |
댓글