한 걸음씩 기록하며
[프로그래머스 코딩테스트] 이상한 문자 만들기 본문
[이상한 문자 만들기]
문제 설명 :
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
⛏제한 조건
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
📁 입출력 예시
👉🏻 답안
function solution(s) {
let a = s.split(' ')
let b = ''
for (let i = 0; i < a.length; i++) {
for (let j = 2; j < a[i].length+2; j++) {
if ( j % 2 === 0 ) {
b += a[i][j-2].toUpperCase()
} else {
b += a[i][j-2].toLowerCase()
}
}
(i < a.length-1) ? b += ' ' : false
}
return b;
}
📑 간단한 설명
sort로 문자열 정렬해서 배열 따로 만들고, for문으로 하나씩 불러오며 대조하는 방식을 택했다.
사실 if 문 안에 sort를 바로 넣었었는데, 런타임 오류가 나서 sort를 위로 뺐다.
지금까지 풀면서 가장 다른 사람들의 답안(함수 사용)이 궁금한 문제였다
💪🏻 공부하면 좋을 답안
function solution(s){
var result = "";
for(var word of s.split(" ")) {
for(var i in word) {
result += word[i][parseInt(i) % 2 == 0 ? "toUpperCase" : "toLowerCase"]();
}
result += " ";
};
return result.slice(0, -1);
}
- for (var word of s.split(" ") ) -> try hello 등 하나씩 구분
- for (var i in word) -> word 하나씩 돌림
- word[i]로 인덱스 하나씩 꺼내고 i 조건 여부에 따라 대문자 소문자로 변환
- ["함수"]() : 이 방식으로도 함수 선언 가능
- slice로 가장 마지막 띄어쓰기를 잘라내서 출력
'알고리즘 & 코딩테스트' 카테고리의 다른 글
[프로그래머스 코딩테스트] 자연수 뒤집어 배열로 만들기 (0) | 2022.01.18 |
---|---|
[프로그래머스 코딩테스트] 자릿수 더하기 (0) | 2022.01.18 |
[프로그래머스 코딩테스트] 완주하지 못한 선수 (0) | 2022.01.17 |
[프로그래머스 코딩테스트] 수박수박수? (0) | 2022.01.17 |
[프로그래머스 코딩테스트] 서울에서 김서방 찾기 (0) | 2022.01.16 |
Comments