데이터 - 기본 코드 및 알고리즘 연습/Codewar
[Codewars] Build Tower
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'