프로그래머스 1단계 - 이상한 문자 만들기 본문
1 단계 : 이상한 문자 만들기
코딩테스트 연습 > 연습문제 > 이상한 문자 만들기
문자열 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 answer = '';
// let idx = 0
// for(let i = 0; i < s.length; i++){
// if(s[i] === ' '){
// answer += s[i];
// idx = 0;
// }
// else if(idx % 2 === 1){
// answer += s[i].toLowerCase();
// idx++;
// }
// else if(idx % 2 === 0){
// answer += s[i].toUpperCase();
// idx++;
// }
// }
// return answer;
s = s.toLowerCase();
return s.split(' ').map(i => i.split('').map((j, key) => key % 2 === 0 ? j.toUpperCase() : j).join('')).join(' ');
// 1. s.split(' ') ['try', 'hello', 'world']
// 2. .map(i => i.split('')) ['t', 'r', 'y'] ...
// 3. .map(j => ...) => ['T', 'r', 'Y'] ...
// 4. .join('') => [Try, HeLlO WoRlD]
// 5. .join(' ') => "TrY HeLlO WoRlD"
}
리뷰
순서는 다음과 같다
1. 소문자로 변환 후, 문자열 s 길이만큼 반복문 돌아줄게요. 공백이면 단어가 끝났다는 의미이니까 idx = 0 초기화 시켜주고 다음 단어로 넘어가야죠
2. 그리고 단어의 짝수번째 인덱스는 대문자로, 홀수번째 인덱스는 소문자로 해주고 return 하면 되겠죠
두 번째 풀이
1. s 를 공백 기준으로 나누면 ['try', 'hello', 'world'], 여기서 원소 하나하나 split하면 ['t', 'r', 'y'] ...
2. 또 이걸 map 돌아서 key가 짝수면 대문자, 아니면 그대로 둬서 합치고 합쳐서 반환하면 한줄에 되네요
총평 : 한줄 챌린지 하는 사람들 보면 언제봐도 놀랍습니다.
'알고리즘 > 1단계' 카테고리의 다른 글
프로그래머스 1단계 - 정수 내림차순으로 배치하기 (4) | 2022.10.04 |
---|---|
프로그래머스 1단계 - 하샤드 수 (3) | 2022.09.30 |
프로그래머스 1단계 - 최대공약수와 최소공배수 (10) | 2022.09.28 |
프로그래머스 1단계 - 행렬의 덧셈 (2) | 2022.09.27 |
프로그래머스 1단계 - 문자열 다루기 기본 (11) | 2022.09.26 |