bandNameGenerator.js (7kyu 85)
Codewars 알고리즘 풀이
Problem
- My friend wants a new band name for her band.
- 친구가 새로운 밴드 이름을 원한다.
- She like bands that use the formula: “The” + a noun with the first letter capitalized.
- 친구는 아래 공식을 사용한 밴드를 좋아한다.
- “The” + 첫 글자가 대문자인 명사
For example:
batman --> The Batman
- However, when a noun STARTS and ENDS with the same letter, she likes to repeat the noun twice and connect them together with the first and last letter, combined into one word.
- 하지만 명사가 같은 글자로 시작하고 끝난다면, 친구는 명사를 두 번 반복하고, 첫 번째와 마지막 글자를 연결해서 한 단어로 결합하고 싶어 한다.
For example:
tart --> Tartart
- Complete the function that takes a noun as a string, and returns her preferred band name written as a string.
- 밴드 이름을 반환하는 함수를 작성한다.
Solution 01
function bandNameGenerator(str) {
if (str[0] !== str[str.length - 1]) {
return 'The ' + str[0].toUpperCase() + str.slice(1);
} else {
return str[0].toUpperCase() + str.slice(1) + str.slice(1);
}
}
bandNameGenerator('batman'); // The Batman
bandNameGenerator('tart'); // Tartart
toUpperCase()
: 문자열을 대문자로 변환한다.
slice()
: 문자열/배열의 일부를 추출하고, 새 문자열/배열로 반환한다.
Solution 02
function bandNameGenerator(str) {
if (str[0] !== str.slice(-1)) {
return 'The ' + str[0].toUpperCase() + str.slice(1);
} else {
return str[0].toUpperCase() + str.slice(1).repeat(2);
}
}
bandNameGenerator('batman'); // The Batman
bandNameGenerator('tart'); // Tartart
repeat()
: 지정된 수의 복사본을 가진 새 문자열을 반환한다.
Solution 03
function bandNameGenerator(str) {
let compare = str[0] !== str.slice(-1);
let theName = 'The ' + str[0].toUpperCase() + str.slice(1);
let repeatName = str[0].toUpperCase() + str.slice(1).repeat(2);
return compare ? theName : repeatName;
}
bandNameGenerator('batman'); // The Batman
bandNameGenerator('tart'); // Tartart
Solution 04
function bandNameGenerator(str) {
return str[0] !== str.slice(-1) ? `The ${str[0].toUpperCase()}${str.slice(1)}` : `${str[0].toUpperCase()}${str.slice(1, -1)}${str}`;
}
bandNameGenerator('batman'); // The Batman
bandNameGenerator('tart'); // Tartart