Huin999 2021. 6. 21. 17:23
 

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

▶  문제 : 

▶  내 답안 : 

def tower_builder(n_floors):
    b = [ '*' + '*'*(2*i) for i in range(n_floors)]
    for i, v in enumerate(b) :
        b[i] = ' '*int((len(b[-1])-len(v))/2) + v + ' '*int((len(b[-1])-len(v))/2)
    return b

▶  모범답안1 : 

def tower_builder(n):
    return [("*" * (i*2-1)).center(n*2-1) for i in range(1, n+1)]

▶  모범답안2 : 

def tower_builder(n_floors):
    tower = []
    spacing = n_floors - 1
    stars = 1
    for i in range(0, n_floors):
        tower.append(' ' * spacing + '*' * stars + spacing * ' ')
        stars += 2
        spacing -= 1
    return tower

▶  배워야할 부분 : center( ), ljust( ), rjust( )

1. center( )

정의된 문자열을 앞뒤로 특정문자로 채운뒤 중앙에 정렬하는 방법

>> str.center(문자열의 길이, '추가할 문자')

ex_str = "debriswisdom"

ex_str.center(20, '*') : '****debriswisdom****'

ex_str.center(20, ' ') : '    debriswisdom    '

 

2. ljust( ), rjust( ) 

정의된 문자열을 앞뒤로 특정문자로 채운뒤 좌, 우로 정렬하는 방법

>> str.ljust(문자열의 길이, '추가할 문자')

ex_str = "debriswisdom"

ex_str.center(20, '*') : '****debriswisdom****'
ex_str.ljust(20, '*') : 'debriswisdom********'
ex_str.rjust(20, '*') : '********debriswisdom'