✏️ 문제 설명
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
- s는 길이 1 이상 200 이하인 문자열입니다.
- s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
- 숫자는 단어의 첫 문자로만 나옵니다.
- 숫자로만 이루어진 단어는 없습니다.
- 공백문자가 연속해서 나올 수 있습니다.
s | return |
"3people unFollowed me" | "3people Unfollowed Me" |
"for the last week" | "For The Last Week" |
✏️ 문제 풀이
function solution(s) {
var answer = '';
let arr = s.split(' ')
.map((item) => item ? item[0].toUpperCase() + item.slice(1).toLowerCase() : '');
answer = arr.join(' ');
return answer;
}
일단 공백(띄어쓰기)으로 s를 나눠주고 map 메서드를 이용해 각 item 첫 글자는 대문자 + 나머지는 소문자로 바꿔준다.
- 다른 풀이
function solution(s) {
return s.split(" ").map(v => v.charAt(0).toUpperCase() + v.substring(1).toLowerCase()).join(" ");
}
위 방법에서 [0] 대신 charAt(0), slice(1) 대신 substring(1)을 사용해 풀었다.
▶ String.prototype.charAt()
charAt(index)
: String 인스턴스의 charAt() 메서드는 string의 지정된 주소(인덱스)에 위치한 단일 UTF-16 코드 단위로 구성된 새로운 문자열을 반환한다.
예시)
const sentence = 'The quick brown fox jumps over the lazy dog.';
const index = 4;
console.log(`The character at index ${index} is ${sentence.charAt(index)}`);
// Expected output: "The character at index 4 is q"
매개변수(Parameters)
index: 0 ~ str.length - 1 사이의 정수.
index가 정수가 아니거나 지정되지 않는다면 고정값은 0이다. => 즉, 첫 번째 문자가 반환된다.
반환 값(Return value)
지정된 index의 문자(정확하게는 하나의 UTF-16 code unit)를 나타내는 string을 반환한다.
index가 범위를 넘어가면, 빈 string을 반환한다.
▶ String.prototype.substring()
substring(indexStart)
substring(indexStart, indexEnd)
: substring() 메서드는 string에서 처음부터 시작 인덱스(indexStart)까지와 끝 인덱스(indexEnd)에서 마지막까지를 제외한 부분을 반환하거나, 끝 인덱스(indexEnd)가 제공되지 않은 경우 indexStart까지 제외하고 문자열 끝까지 반환한다.
예시)
const str = 'Mozilla';
console.log(str.substring(1, 3));
// Expected output: "oz"
console.log(str.substring(2));
// Expected output: "zilla"
매개변수(Parameters)
indexStart: 반환되는 substring에 포함시키려는 첫 번째 문자 인덱스
indexEnd: 반환되는 substring에 제외시키려는 첫번째 문자 인덱스
반환 값(Return value)
주어진 문자열에 지정된 부분을 포함하는 새로운 문자열 반환.
+ length 속성과 같이 사용하기(Using substring() with length property)
const text = "Mozilla";
// Takes 4 last characters of string
console.log(text.substring(text.length - 4)); // prints "illa"
// Takes 5 last characters of string
console.log(text.substring(text.length - 5)); // prints "zilla"
+ substring()과 substr()의 차이점(The difference between substring() and substr())
substr()의 두 개의 매개변수는 start, length / substring()은 start, end
substr()의 start 인덱스가 음수(-)라면 문자열 끝으로 줄 바꿈 / substring()은 0으로 고정
substr()의 음수 길이(Negative lengths)는 0으로 처리 / substring()의 경우 end가 start보다 작다면 start, end 두 인덱스를 교환
const text = "Mozilla";
console.log(text.substring(2, 5)); // "zil"
console.log(text.substr(2, 3)); // "zil"
substr()은 ECMAScript의 legacy feature로 여겨져 가능한 사용을 피하는 것이 좋다. substring()을 사용하자.
+
OpenAI인 ChatGPT 써보니까 너무 유용하고 신기하다.. 재밌고 진짜 똑똑하다. 재미로 생일을 물어보면 자신은 AI model이라 생일이 없다고 한다.
어쨌든 legacy 의미는 과거(지난), 구식! updated와 반대 개념으로 생각하면 된다.
🙂 공부하며 정리하는 글입니다. 잘못된 점이 있다면 피드백 주시면 감사합니다.
'Algorithms > 코테 문풀' 카테고리의 다른 글
[프로그래머스]행렬의 덧셈 - JavaScript / 2중 for문, map() 풀이 (0) | 2023.01.23 |
---|---|
[프로그래머스] 핸드폰 번호 가리기 - JavaScript / repeat(), fill(), 정규 표현식 풀이 (0) | 2023.01.21 |
[프로그래머스] 두 정수 사이의 합 - JavaScript / 등차수열의 합 공식 (0) | 2023.01.19 |
[프로그래머스] 가장 가까운 같은 글자 - JavaScript / Stack (0) | 2023.01.18 |
[프로그래머스] 과일 장수 - JavaScript (0) | 2023.01.18 |