CodeWars 07: Format a string of names like 'Bart, Lisa & Maggie'

김기욱·2021년 5월 27일
0

문제설명

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:

namelist([ {'name': 'Bart'}, {'name': 'Lisa'}, {'name': 'Maggie'} ])
# returns 'Bart, Lisa & Maggie'
namelist([ {'name': 'Bart'}, {'name': 'Lisa'} ])
# returns 'Bart & Lisa'
namelist([ {'name': 'Bart'} ])
# returns 'Bart'
namelist([])
# returns ''

풀이

def namelist(names):
    result = ''
    if len(names) > 0:
        for i, v in enumerate(names):
            if i == len(names) - 1:
                result += v['name']
            elif i == len(names) - 2:
                result += v['name'] + ' & '
            else:
                result += v['name'] + ', '
    return result
  1. 결과 return용 공백자('') result 변수를 생성시켜줍니다.
  2. names의 길이가 1일때만 for loop를 돌려주게 조건문을 겁니다.
  3. enumerate를 사용해 인덱스를 판단해 분기처리를 해줍니다.
  • 마지막 문자는 그냥 붙여줍니다.
  • 뒤에서 두 번째 문자는 &(and)를 붙여줘야합니다. 붙여줍니다.
  • 그 외에 문자는 콤마가 필요합니다. 콤마를 붙여줍니다.
  1. 합성된 result를 return 합니다.
profile
어려운 것은 없다, 다만 아직 익숙치않을뿐이다.

0개의 댓글