-
[Codewars] Format a string of names like 'Bart, Lisa & Maggie'Algorithm 2020. 11. 8. 18:31
<Codewars 6Kyu> Format a string of names like 'Bart, Lisa & Maggie' 문제
www.codewars.com/kata/53368a47e38700bd8300030d/train/javascript
Codewars: Achieve mastery through challenge
Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.
www.codewars.com
[문제] Format a string of names like 'Bart, Lisa & Maggie'
Given: an array containing hashes of names
Return: a string formatted as a list of names separated by commas except for the last two names, which should be separated by an ampersand.
example:
list([ {name: 'Bart'}, {name: 'Lisa'}, {name: 'Maggie'} ]) // returns 'Bart, Lisa & Maggie' list([ {name: 'Bart'}, {name: 'Lisa'} ]) // returns 'Bart & Lisa' list([ {name: 'Bart'} ]) // returns 'Bart' list([]) // returns ''
배열로 구성된 list(names)를 입력받아서
name의 개수에 따라 다르게 출력하는 함수를 만드는 문제
수도코드
1. 이름 1개 -> 이름 형태로 리턴 2. 이름 2개 -> 첫번째 & 두번째 형태로 리턴 3. 이름 3개 -> 첫번재, 두번째 & 세번째 형태로 리턴 4. 이름 4개 -> 첫번째, 두번째, 세번재 & 네번째 형태로 리턴 . . . 5. 이름 5개 이상 -> 첫번째, 두번째, 세번째....., 마지막 전 & 마지막 형태로 리턴
풀이
function list(names){ let newArr = [] if(names.length === 0) { return '' } else if(names.length === 1) { return names[0].name } else if(names.length === 2) { return `${names[0].name} & ${names[1].name}` } else if(names.length === 3) { return `${names[0].name}, ${names[1].name} & ${names[2].name}` } else if(names.length >= 4) { for(let i = 0; i < names.length-2; i++) { newArr.push(names[i].name) } return newArr.join(', ') + `, ${names[names.length-2].name} & ${names[names.length-1].name}` } }
통과
다른 풀이
function list(names){ return names.reduce(function(prev, current, index, array){ if (index === 0){ return current.name; } else if (index === array.length - 1){ return prev + ' & ' + current.name; } else { return prev + ', ' + current.name; } }, ''); }
'Algorithm' 카테고리의 다른 글
[프로그래머스] 약수의 합 (0) 2021.01.18 [Codewars] Valid Braces (0) 2020.11.16 [Codewars] Are they the "same"? (0) 2020.11.08 [Codewars] Who likes it? (0) 2020.10.28 [Codewars] Create Phone Number (0) 2020.10.27