whatisthis?
[프로그래머스] 이상한 문자 만들기 - JavaScript 본문
javascript
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다.
각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 조건
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
예시
입출력 예
s return
"try hello world" "TrY HeLlO WoRlD"
입출력 예 설명
"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다.
각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다.
따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
내가 작성한 코드
function solution(s) {
let ans = '';
const arr = s.split(' ').map(x => x.split(''));
for (let i=0; i<arr.length; i++) {
ans += arr[i].map((val, ind) => ind % 2 === 0 ? val.toUpperCase() : val.toLowerCase()).join('') + ' ';
}
return ans.trim();
}
- 먼저 s를
split(' ')
으로 각 단어를 요소로 갖는 배열을 만든 후, map 메서드로split('')
각 글자를 배열로 나눈다.
-> arr는 [['t','r','y'],['h','e','l','l','o'],['w','o','r','l','d']] 가 된다.
arr.length
만큼(위의 예시에서는 3이다) for 반복문을 실행한다.
-> 짝수인 문자는 대문자로, 홀수인 문자는 소문자로 해주기 위해 map
메서드 사용 후 join('')
으로 합쳐준다.
- 단어마다 끝에 띄어쓰기를 붙여준다.
- 마지막 띄어쓰기는 불필요하므로
trim()
으로 없애준다.
콘솔은 통과했지만 실행해보니 몇개 테스트에서 실패하였다.
아마도 마지막에 ' '를 붙인 것이 문제인가 싶어서 다시 작성해봤다.
다시 작성한 코드
function solution(s) {
let answer = [];
const arr = s.split(' ').map(x => x.split(''));
for (let i = 0; i < arr.length; i++) {
answer.push(arr[i].map((val, ind) => ind % 2 === 0 ? val.toUpperCase() : val.toLowerCase()).join(''));
}
return answer.join(" ");
}
공백이 하나 이상인 경우가 있으므로 우선 answer 배열에 각 문자열을 push한 후, join(" ")로 각 단어별로 띄어쓰기를 해주면 된다.
실행 결과
테스트 1 〉 통과 (5.45ms, 30.4MB)
테스트 2 〉 통과 (4.76ms, 30.2MB)
테스트 3 〉 통과 (7.62ms, 30.4MB)
테스트 4 〉 통과 (9.93ms, 30.4MB)
테스트 5 〉 통과 (6.25ms, 30.4MB)
테스트 6 〉 통과 (4.93ms, 30.2MB)
테스트 7 〉 통과 (4.98ms, 30.1MB)
테스트 8 〉 통과 (8.33ms, 30.3MB)
테스트 9 〉 통과 (6.23ms, 30.4MB)
테스트 10 〉 통과 (9.67ms, 30.5MB)
테스트 11 〉 통과 (6.73ms, 30.3MB)
테스트 12 〉 통과 (6.46ms, 30.2MB)
테스트 13 〉 통과 (5.13ms, 30.1MB)
테스트 14 〉 통과 (4.81ms, 30.3MB)
테스트 15 〉 통과 (5.22ms, 30.3MB)
테스트 16 〉 통과 (5.70ms, 30.4MB)
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[프로그래머스] 시저 암호 - JavaScript (0) | 2022.07.07 |
---|---|
[프로그래머스] 약수의 합 - JavaScript (0) | 2022.07.07 |
[프로그래머스] 짝수와 홀수 - JavaScript (0) | 2022.07.06 |
[프로그래머스] 자연수 뒤집어 배열로 만들기 - JavaScript (0) | 2022.07.06 |
[프로그래머스] 정수 내림차순으로 배치하기 - JavaScript (0) | 2022.07.06 |