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

김예지·2021년 10월 8일
1

문제

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


문제 풀이

코드

map()을 잘 활용하면 코딩테스트에서 쉽게 문제를 풀 수 있는 것들이 많다. map과 친해지자!👯‍♂️

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

잘못된 코드

function solution(s) {
    let answer='';
    s=s.split(' ');
    for(let i=0; i<s.length; i++){
        let arr=s[i].split('');
        for(let j=0; j<arr.length; j++){
            if(j%2===0) arr[j]=arr[j].toUpperCase();
            answer+=arr[j];
        }
        answer+=" ";
    }
    return answer.slice(0, answer.length-1);
}

아니 도대체 왜 안되는거지? 코드만 봤을 때는, 직관적으로 생각했을 때는 큰 오류가 없어보인다. 에러 메시지를 검색해보니,좋은 Q&A를 발견했다.
문자열 전체를 replacing 하는 것은 되지만, 문자열 중 일부를 바꾸는 것은 안된다! (a="apple"일 때, a="APPLE"은 가능하지만 a="Apple"은 불가능하다는 뜻)
따라서, arr[i][j].toUpperCase()로 만드는 것은 안된다

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글

comment-user-thumbnail
2021년 10월 25일

10/25
일부 문자를 대문자나 소문자로 변환 후 다시대입하는 것은 안됨!
예를들어 'string'에서 s만 대문자로 변환 후 다시 대입하는 것은 안됨(s[0]=s[0].toUpperCase()는 안됨)
하지만, result+=s[0].toUpperCase()와 같은것은 됨! (result=''로 가정)

답글 달기