본문 바로가기

프로그래머스 문제/Level 1

[프로그래머스] 이상한 문자 만들기 - 자바스크립트

문제 설명

 

 

 

문제 풀이

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

  위 코드는 어떤 것이든 아무런 문제 없이 결과가 받아지는데 이상하게 코드 채점에서는 실패한다... 이유를 아직도 찾지 못했다.

 

  그래서 아래 코드로 다시 작성하였다. 코드가 더 복잡해졌지만 위 코드의 문제점을 확인할 수가 없어서 어쩔수 없었다.

function solution(s) {
    var answer = '';
    let sArr=s.split('')
    let arrUp = [];
    let arrDown = [];
    for (let i = 'a'.charCodeAt(0); i <= 'z'.charCodeAt(0); i++) {
      arrDown.push(String.fromCharCode(i));
    }
    for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) {
      arrUp.push(String.fromCharCode(i));
    }
    sArr.map((e,i)=>{
      if(e===" "){
         answer +=" "
      }else if(i===0){
          answer +=e.toUpperCase()
      }else if(sArr[i-1]===" "){
          answer += e.toUpperCase()
      }else if(arrDown.includes(answer[i-1])){
          answer += e.toUpperCase()
      }else if(arrUp.includes(answer[i-1])){
          answer += e. toLowerCase()
      }
    })
    
    return answer;
}

 

 

 

실행 결과

 

 

 

코드 채점하고 제출