-
[level1] 이상한 문자 만들기programmers/level1 2020. 7. 4. 01:32
문제 설명 :
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백 문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
입력 : "try hello world"
출력 : "TrY HeLlO WoRlD"
접근 방법 :
function solution(s) { const strArr = s.split(); let Arr = []; strArr.forEach(str => { let answer = ''; for(let i in str){ if(i === 0 || i % 2 === 0){ answer += str[i].toUpperCase(); }else{ answer += str[i]; } } Arr.push(answer) }); return Arr.join().replace(/,/gi, " "); }
내 첫 코드는 이랬다..
출력 값은 맞았지만, 채점을 했을 때 틀렸다고 해서 질문하기의 글들을 보고 그때 알았다.
그것은 바로, 공백 체크와 대소문자를 바꾸는 함수를 무조건 넣어야 한다는 것을 말이다.. 😥
그래서 오랜 고민 끝에 코드를 수정해보았다.
수정한 코드 :
function solution(s) { let answer = ""; s.split(" ").forEach(ch => { for(let i in ch){ answer += i % 2 === 0 ? ch[i].toUpperCase() : ch[i].toLowerCase(); } answer += " " }); return answer.slice(0, -1); }
우선 s에는 "try hello world" 입력값이 들어온다.
여기서 공백 체크를 해야 하는데, 나는 split(" ")을 이용해 각각의 공백을 처리했다.
그러면 ["try", "hello", "world"] 이런 식으로 새 배열이 반환될 것이다.
반환된 배열들을 forEach() 구문을 통해 항목들을 하나씩 꺼내서 그 항목(문자열)을 가지고 for in문을 통해서 각각의 문자를 추출하고 삼항 연산자를 써서 짝수이면 대문자로 반환하고, 아니면 소문자를 반환한다.
반환되면, "TrY HeLlO WoRlD " 이렇게 값이 나올 것이다.
그런데 맨 마지막에 공백 문자가 들어가 있는 것을 볼 수 있다. 이 공백 문자를 제거해야만 문제를 통과할 수 있다.
마지막으로 return 값에 slice(0, -1)로 설정해서 첫 글자부터 마지막 이전의 글자까지만 반환하도록 해준다.
그러면 원하는 값 "TrY HeLlO WoRlD"이 출력될 것이다.
'programmers > level1' 카테고리의 다른 글
[level1] - 제일 작은 수 제거하기 (0) 2020.07.14 [level1] - 자연수 뒤집어 배열로 만들기 (0) 2020.07.04 [level1] - 수박수박수박수박수박수? (0) 2020.06.29 [level1] - 문자열 내림차순으로 배치하기 (0) 2020.06.29 [level1] - 자릿수 더하기 (0) 2020.06.26