코테 준비/프로그래머스

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

배트리버 2023. 3. 5. 01:36

이상한 문자 만들기

문제 설명

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

제한 사항
  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예sreturn
"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을 통해 맨 마지막에 불필요하게 붙은 공백문자를 제거해주며 문제 풀기를 완료하였다 !!