본문 바로가기
개발 공부/알고리즘 개념+문제풀이

[프로그래머스 1단계]이상한 문자 만들기 with javascript

by 크롱이크 2021. 6. 24.

문제설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다.

각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

 

주의사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

입출력예시

코드

function solution(s) {   
    let arr = s.split(' ')
        let result = [];
        
        for(let i = 0; i<arr.length; i++){
            let words = arr[i].split('').map((word,idx)=>{
            if(idx % 2 === 0){
                return word.toUpperCase()
            } else if(word % 2 !== 0) {
                return word.toLowerCase();
        }
    }).join('');
    
            result.push(words)
    }
    
    return result.join(' ')
}

해석

문제를 먼저 해석해보면 띄어쓰기가 나오게 되면 다음에  나올 글자는 0번째 인덱스가 된다.

그렇기에 첫번째 할 일은 띄어쓰기 기준으로 배열에 단어를 넣어줘야한다.

그 배열만큼 포문을 돌리는데, 각 단어마다 접근하기 위해 다시 split으로 단어마다 나눠주고 map을 사용하여 인덱스와 워드를 가져온다. 

인덱스를 2로 나눠 나머지가 0이면 인덱스 위치가 짝수임으로 toUpperCase() 해주고, 0이 아니라면 toLowerCase()해준다.

그렇게 만든 각 알파벳을 join으로 다시 합친다.

 

이렇게 각각의 단어가 만들어지면 result라는 빈배열에 푸쉬해준다.

입출력 예시를 기준으로 보게 되면   ["TrY",  "HeLlO", "WoRlD"]  처럼 될것이다.

 

그럼 마지막으로 배열안의 단어를 합치며 하나의 문자열로 만들기 위해 띄어쓰기를 기준으로 만들어준다. 

완성...!ㅕ

 

한줄평

이 문제는 처음에 잘못생각하여 시간이 걸렸다. split으로 나눠야 하는건 알았지만, 처음부터 알파벳마다 나누는 생각을 했다. 이 문제는 먼저 단어마다 나누고 알파벳마다 나눠야했다. 또 하나 배워갑니다 감사합니다.

 

링크

https://programmers.co.kr/learn/courses/30/lessons/12930

 

 

 

 

 

반응형

댓글