문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
s | return |
"try hello world" | "Try HeLlO WoRlD" |
입출력 예 설명
- "try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
문제풀이
- 나의 풀이
- split()으로 문자열을 자르고, 자른 문자열의 반환 배열을 map()을 사용하여 반복하면서, 각 단어별 문자열의 index가 짝/홀수에 따라 toUpperCase() = 대문자, toLowerCase() = 소문자로 반환해주었다.
function solution(s) {
var answer = "";
answer = s
.split(" ") // ['try', 'hello', 'world']
.map((string) => {
return string
.split("") // [['t', 'r', 'y'], ['h', 'e', 'l', 'l', 'o'], ['w', 'o', 'r', 'l', 'd']]
.map(
(char, i) => (i % 2 === 0 ? char.toUpperCase() : char.toLowerCase())
// 짝수번째 문자열인 경우 대문자(toUpperCase())로, 홀수번째 문자열인 경우 소문자(toLowerCase())로 변환
)
.join(""); // 문자열 합치기
})
.join(" "); // 문자열 공백 넣어서 합치기
return answer;
}
solution("try hello world");
- 다른 분의 풀이
- 문자열을 모두 대문자로 변환하고, replace()를 사용하여 짝/홀에 맞춰 대문자와 소문자로 변환하는 코드를 작성하셨는 데 가끔씩 다른 분들의 풀이를 볼 때마다 정규식 쓰신 거 보면 멋지다고 생각된다.. 므쪄요
function solution(s) {
return s.toUpperCase().replace(/(\w)(\w)/g, function (a) {
return a[0].toUpperCase() + a[1].toLowerCase();
});
}
solution("try hello world");
'코딩 테스트 연습 > Programmers' 카테고리의 다른 글
[프로그래머스] 시저 암호 (0) | 2023.08.14 |
---|---|
[프로그래머스] 제일 작은 수 제거하기 (0) | 2023.08.11 |
[프로그래머스] 같은 숫자는 싫어 (0) | 2023.08.09 |
[프로그래머스] 부족한 금액 계산하기 (0) | 2023.08.08 |
[프로그래머스] 콜라츠 추측 (0) | 2023.08.07 |
댓글