Programmers: 이상한 문자 만들기

송유나·2021년 1월 19일
0

1. 문제

  • 단어마다 짝수 인덱스는 대문자로, 홀수 인덱스는 소문자로만 바꿔주면 되는 문제

2. 풀이 계획

  1. 받은 문자열을 배열에 쪼개 넣어줌: split('')
  2. for문으로 돌리면서 짝,홀수 체크 후 upper또는 lower처리한 문자를 answer에 넣어줌
  3. 공백 만났을 때는 index[0]부터 공백까지 잘라내버림

3. 에러 발생

  • 계획은 나름 괜찮았으나 많은 에러를 만났고 수많은 테스트 케이스를 실패했다.
    테스트 케이스가 공개되어 있지 않기 때문에 직접 만들어가면서 테스트ㅠㅠ
    결론은 전체적으로 봤을 때 for문을 부적절하게 사용하고 있던게 원인이었다.
  1. 첫번째 원인: 공백 처리 시 break 사용을 하지 않아서 무한루프에 빠져버림(후에 break 안써줘도 되도록 for문 조건을 수정) + 런타임 에러
  2. 두번째 원인: for문을 제 때 끝내지 못해서 toUpperCase()toLowerCase()undefined를 체크하게되어 type error 발생
  3. 세번째 원인: 공백 처리 시 continue 사용을 하지 않아서 공백이 연속으로 나오면 처리할 수 없었음

4. 코드

function solution(s) {
    var answer = '';
    var word = s.split('')	//배열에 한 글자씩 담기
    
    for(var i=0; i<word.length; i++){
        if(word[i]==' '){	//공백일 때
            answer += ' '	//공백을 answer에 넣고
            word.splice(0,i+1);	//index[0]부터 공백까지 다 잘라버림
            i = -1;		//i++이 되기 때문에 -1로 설정해줘야 다시 0부터 시작가능
            continue;
            
            //if(word.length==0) break;
        }
        if(i%2 == 0){	//
            answer += word[i].toUpperCase();
        }else{
            answer += word[i].toLowerCase();
        }
    }
    return answer;
}

5. 후기

  • 예상치 못했던 문제들을 너무 많이 만나서 그냥 다른 사람들이 작성한 코드를 보고 따라서 작성하고 싶은 생각이 계속 들었지만 내가 생각한 방향으로 끝까지 작성해보고 싶었고 결국 해냈다.
    효율적이지 않더라도 일단은 내가 생각했던 방향으로 해낸것이 뿌듯 ㅎㅎ
profile
개발자를 꿈꾸는 햇병아리입니다.

0개의 댓글