[프로그래머스] 코딩테스트 연습 - 이상한 문자 만들기 (javascript)

지미노·2022년 9월 11일
0

코딩테스트

목록 보기
34/40

에러가 안풀릴 때,
에러도 안뜨면서 원하는대로 작동이 안될때, 근데 그 원인도 모르겠을때!!!!! 넘 열받으니깧ㅎㅎㅎㅎㅎ
코테로 머리를 식히는 시간을 가져보겠음.

문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

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

생각해본 풀이법

일단 str.toUpperCase()를 사용해야 할거 같긴 한데..... 음...........
단어별로 대소문자 처리를 해줘야 한다니까
s.split(" ") 사용해서 공백은 분리해서 단어끼리 찢어서 배열에 넣는다.

이중포문을 이용해서 각 단어별로 대소문자 처리를 해주면 될듯???

코드가 좀 조잡해보이지만....
음 띄어쓰기 처리만 해주면 된다..!

ㅋㅋㅋㅋㅋㅋ 살려주셈.... 더럽게 까다로우시네요

최최최최최종 코드...

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

오... 12점 감사합니다....!

아 생각해보니 join(' ') 쓰면 되는거였음 ㅋㅋ ;;;;;;;;;;;;;;

맵과 조인 사용한 답안

function toWeirdCase(s) {
  return s.split(' ').map((a) => {
    return a.split('').map((b, i) => {
      return (i % 2 === 0) ? b.toUpperCase() : b.toLowerCase();
    }).join('');
  }).join(' ');
}

1개의 댓글

comment-user-thumbnail
2022년 9월 12일

멋진 풀이들이네요! 퍼가용~

답글 달기