티스토리 뷰
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
s | return |
---|---|
"try hello world" | "TrY HeLlO WoRlD" |
입출력 예 설명
try hello world
는 세 단어 try
, hello
, world
로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 TrY, HeLlO, WoRlD
입니다. 따라서 TrY HeLlO WoRlD
를 리턴합니다.
접근
주어진 문자열을 공백을 기준으로 배열로 만든다.
배열의 각 원소, 즉 각 단어마다 반복문을 수행하면서 대소문자화 한다.
구현
const solution = s => {
let answer = '';
// 공백을 기준으로 나누어 배열로 만든다.
let arr = s.split(" ");
for (let i = 0; i < arr.length; i++) {
// 새로운 단어가 담길 변수
let newWord = "";
// 글자 위치에 따라 대소문자화
for (let j = 0; j < arr[i].length; j++) {
newWord = j % 2 === 0
? newWord + arr[i][j].toUpperCase()
: newWord + arr[i][j].toLowerCase();
}
// 단어 교체
arr[i] = newWord;
}
// 각 원소 사이에 공백을 넣고 문자열로 변환
answer = arr.join(" ");
return answer;
};
글자만 바꾸려고 했더니 자꾸 에러가 발생했다.
글자가 아니라 단어 자체를 조작해야 했다.
다른 사람의 풀이
map() 메소드를 사용해서 푼 풀이를 보고 나름대로 작성해보았다.
언젠가 이렇게 함수형 풀이가 먼저 떠올랐으면 좋겠다.
const solution = s => {
return s.split(" ").map(word => {
return word.split("").map((letter, idx) => {
return idx % 2 === 0
? letter.toUpperCase()
: letter.toLowerCase();
}).join("");
}).join(" ");
};
반응형
'프로그래머스 문제풀이 > Level 1' 카테고리의 다른 글
[프로그래머스] 콜라츠 추측 (0) | 2020.04.16 |
---|---|
[프로그래머스] 하샤드 수 (0) | 2020.04.16 |
[프로그래머스] 정수 제곱근 판별 (0) | 2020.04.15 |
[프로그래머스] 직사각형 별 찍기 (0) | 2020.04.15 |
[프로그래머스] x만큼 간격이 있는 n개의 숫자 (0) | 2020.04.15 |
댓글