본문 바로가기
알고리즘 스터디/[프로그래머스] 연습문제

[알고리즘] 이상한 문자 만들기 문제풀이(자바스크립트 javascript)

by 제니운 2022. 7. 18.
728x90

 

(문제 풀이 생각)

아 어려워,,

 

👌 일단, 공백이랑 글자를 분리해줘야 한다. 분리해주면 새로운 변수가 있어야 하니까 그걸 words라고 하면,

 

let words = s.split(' '); // ' ' 사이에 스페이스바 넣어주기

 

👌 위치를 설정해주기 위해 i를 구하면

 

for(let i = 0; i < words.length; i++)

 

👌 지금 words는 try , 공백, hello, 공백, world 이렇게 구분되어 있으니까, 약간 구조가

[ try, 공백, hello, 공백, world ] 요런 느낌

 

i는 [] 의 위치를 구한 거니까, 예를 들어 try 가 0이 된거고

그럼 try의 t를 찾아주려면 words[] 이 모양이 되야 한다.

 

for(let i = 0; i < words.length; i++){

     for(let j=0; j < words[i].length; j++)

 

👌 t의 자리까지 구하도록 한 거니까, t가 짝수인지 홀수인지 구하면 되고

 

if( j % 2 === 0) // 타입까지 비교하도록 === 구성

 

👌 t를 어떻게 구했냐면 words[i][j]

 

words[i] => [ try, 공백, hello, 공백, world ]  여기에서 try 구한 거라고 생각해보자

words[i][j] => try에서 t를 구한 것

 

for(let i = 0; i < words.length; i++){

     for(let j=0; j < words[i].length; j++){

       if(j % 2 ===0) {

           answer += words[i][j].toUpperCase();  // t자리가 짝수이면, 대문자로 만들어!

       } else{

           answer += words[i][j].toLowerCase();

       }

 

👌 이제 공백을 다시 넣어줘야 하는데,

words 가 [ try, 공백, hello, 공백, world ] 요 느낌인데,

[]의 위치는 아까 i 라고 구해줬고

try 다음에 공백이 들어가야 하니까, j 가 아니라 i에 넣어주도록 구하면 된다.

예를들어, try 뒤에 공백을 넣어주려고 가정하면

 

try가 i = 0 이니까, 0 뒤에 붙여주면 되는 건데

if( i < words.length) 이렇게 해버리면 ,  i가 4가 될 경우, world 뒤에 공백이 붙는 거니까

if ( i < words.length - 1) 이렇게 붙여주고

 

if ( i < words.length - 1) {

     answer += ' ' ;   // '' 사이에 스페이스바

이렇게 뒤에 공백 붙여달라고 하면 된다.

 

 

✅ 최종 코드 

 

function solution(s) {
    var answer = '';
    let words = s.split(' ');
    
    for (let i = 0; i < words.length; i++) {
        for(let j = 0; j < words[i].length; j++) {
            if(j % 2 === 0) {
                answer += words[i][j].toUpperCase();
            } else {
                answer += words[i][j].toLowerCase();
            }
        }
        if (i < words.length -1) {
            answer += ' ';
        }
    }
    return answer;
}

 

이해는 했지만, 비슷한 문제가 나올 경우 못 풀어 낼 것 같아서,

여러번 풀어봐야 내 거로 될 수 있을 것 같다..

연습의 중요성..ㅠㅠ

728x90