https://school.programmers.co.kr/learn/courses/30/lessons/12951
문제 아이디어
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
- 공백 문자열을 기준으로 각 단어를 쪼깨 배열로 만든다. split() 사용
- 반복문을 돌면서 각 요소의 첫번째 단어는 대문자로, 나머지는 소문자로 표시한다 toUpperCase(), toLowerCase()
- 두 단어를 합쳐 새 단어를 만들고, 배열에 새로 추가한다.
- 배열에 추가한 단어는 string을 ‘ ‘ 이 붙어 있으니, join()으로 ‘ ‘ 을 풀어준다
function solution(s) {
const stringArr = s.split(" ");
const answer = [];
for (let str of stringArr) {
let oneStr = str[0].toUpperCase();
let twoSrt = str.slice(1, str.length).toLowerCase();
answer.push(oneStr + twoSrt);
}
return answer.join(" ");
}
주의사항!!!
제한 조건을 제대로 보지 않아서 테스트케이스 ㅋㅋㅋㅋ 틀려버림!!!!!!!!!
- 공백문자가 연속해서 나올 수 있습니다.
위 내용을 읽었다면 첫번째 작성한 코드에서 빠진 부분이 있다는 걸 알 수 있다.ㅋㅋㅋ str의 [0]인덱스 값이 아무것도 없는 공백일 경우이다. 이 경우에는 toUpperCase()가 동작하지 않아서 런타임에러를 발생시킨다.
첫번째 문자열이 공백인 경우의 조건부 처리를 해줘야 한다. if문으로 처리를 해주고, 이 또한 answer에 공백으로 단어를 저장해줘야 한다.
function solution(s) {
const stringArr = s.split(" ");
const answer = [];
for (let str of stringArr) {
if (str.length > 0) {
let oneStr = str[0].toUpperCase();
let twoSrt = str.slice(1, str.length).toLowerCase();
answer.push(oneStr + twoSrt);
} else {
answer.push("");
}
}
return answer.join(" ");
}
'개발공부_Blog > Algorithm' 카테고리의 다른 글
프로그래머스-포켓몬 (0) | 2024.11.29 |
---|---|
완주하지 못한 선수 (0) | 2024.11.29 |
프로그래머스 - 다리를 지나는 트럭 (0) | 2024.11.20 |
프로그래머스-주식가격 (1) | 2024.11.18 |
프로그래머스 - 프로세스 (0) | 2024.11.17 |
댓글