채린씨의 티스토리
[Programmers] Level1 - 이상한 문자 만들기(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 result = "";
let flag = true;
for (let i = 0; i < s.length; i++) {
if (s[i] === " ") {
flag = false;
result += s[i];
} else if (flag) {
result += s[i].toUpperCase();
} else {
result += s[i].toLowerCase();
}
flag = !flag;
}
return result;
}
좋았던 다른 사람의 풀이
1. 정규식으로 연속된 두 문자를 표현한 점이 인상깊었다.
2. 왜 문자열 전체를 대문자로 변환하고 시작했을까.. 라고 생각했는데, 각 단어의 길이가 홀수일 경우 마지막 문자를 고려한 것이었다.
아이디어가 참신했던 풀이!
function solution(s) {
return s
.toUpperCase()
.replace(/(\w)(\w)/g, (a) => a[0].toUpperCase() + a[1].toLowerCase());
}
프로그래머스 문제들의 자바스크립트 풀이가 궁금하신가요? 아래 링크를 클릭해보세요!
https://programmers-solution-bank.netlify.app/
'코딩테스트 대비' 카테고리의 다른 글
[Programmers] Level1 - 시저 암호(JavaScript) (0) | 2022.04.07 |
---|---|
[Programmers] Level1 - 약수의 합(JavaScript) (0) | 2022.04.07 |
[Programmers] Level1 - 자릿수 더하기(JavaScript) (0) | 2022.04.07 |
[Programmers] Level1 - 자연수 뒤집어 배열로 만들기(JavaScript) (0) | 2022.04.07 |
[Programmers] Level1 - 정수 내림차순으로 배치하기(JavaScript) (0) | 2022.04.07 |
Comments