본문 바로가기

■ 프로그래밍/알고리즘

[JS] Format a string of names like 'Bart, Lisa & Maggie'.

www.codewars.com/kata/53368a47e38700bd8300030d/train/javascript

 

[ 문제 ]

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 ''

Note: all the hashes are pre-validated and will only contain A-Z, a-z, '-' and '.'.

 

 

[ 풀이 ]

2020.11.21 (20min)

function list(names){
  let answer = [];
  let result;
  
  if (names.length === 0) return '';

  for (let n in names) {
    const values = Object.values(names[n]).join('')

    if (names.length === 1) {
      return values
    } else if (names.length === 2 ) {
      answer.push(values)
      result = answer.join(' & ')
    } else {
      answer.push(values);
      result = answer.join(', ')
      let n = result.lastIndexOf(', ')
      result = result.slice(0, n) + result.slice(n).replace(', ', ' & ');
    }
  }
 
  return result
}

 

Test는 잘 통과했는데, Attempt를 해보니 자꾸 answer 마지막에 'shuffle'이 찍혀서 빈 문자열이 push되어 안맞는다...

다른 곳에서 console 찍었을 땐 안찍히는걸 보아 오류가 있는게 아닐까 싶다

'■ 프로그래밍 > 알고리즘' 카테고리의 다른 글

JS 100제 - 1권 (Q1~)  (0) 2020.12.11
[JS] Human Readable Time  (0) 2020.11.15
[JS] Vowel Count  (0) 2020.11.14
[JS] Stop gninnipS My sdroW!  (0) 2020.11.13
[JS] Regex validate PIN code  (0) 2020.11.12