이상한 문자 만들기
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
"try hello world" | "TrY HeLlO WoRlD" |
"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
나의 풀이
function solution(s) {
var answer = '';
let arr = s.split(' '); //공백으로 문자열을 나누어 배열에 저장
let str = '' ;
for(let i = 0 ;i<arr.length; i++){
str = arr[i];
for(let j =0;j<str.length;j++){
if(j%2 ===0){ //첫번째 문자거나 짝수번째일때 대문자로 변경
answer += str[j].toUpperCase();
}
else{
answer += str[j].toLowerCase();
}
}
answer += " ";
}
answer = answer.substr(0,answer.length-1);
return answer;
}
이 문제만 3시간을 풀었다... 피곤해서 그런지 갑자기 머리가 안돌아가서 문제를 이상하게 풀었던 거같다.. 변수 j 를 쓰는 부분에 증감연산자로 i++을 써버려서 무한루프에 빠져 ... 그만 몇번이나 강제종료를 했는지 모르겠다.. 오류를 발견하고 수정하니 바로 문제가 풀렸다 ..! 이렇게 금방 풀 수 있었던 건데... 잡담은 그만하고 문제에대해 설명해보면 !!
입력으로 문자열이 주어지는데 공백으로 구분하여 단어별로 인덱스가 짝수면 대문자를 홀수면 소문자로 변환한다고 한다. 이 문제를 보자마자 문자열을 단어로 나눠서 배열에 넣어야겠다 ! 하는 생각이 들었고 떠오른건 split 이었다.
split 을 이용해 공백으로 문자열을 나누어 배열에 넣어주었고 배열의 요소마다 str 에 할당하여 str 즉 문자열 인덱스로 접근해 짝수일 경우에는 대문자를 그렇지 않을경우에는 소문자로 변환해주었다.
그리고 처음 주어진 문자열에는 공백이 있으므로 안쪽 for 문을 빠져나올 때 공백문자를 추가해주었다.
그리고 마지막에 substr을 통해 맨 마지막에 불필요하게 붙은 공백문자를 제거해주며 문제 풀기를 완료하였다 !!
'코테 준비 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] K번째 수 (javascript) (1) | 2023.03.18 |
---|---|
[프로그래머스] 예산 (javascript) (0) | 2023.03.06 |
[프로그래머스] 3진법 뒤집기 (javascript) (0) | 2023.03.04 |
[프로그래머스] 같은 숫자는 싫어 (javascript) (0) | 2023.03.04 |
[프로그래머스] 최대공약수와 최소공배수 (javascript) (0) | 2023.03.04 |