Prepare > Python > Strings > Text Alignment

2023. 7. 9. 21:51HackerRank-Python

 

Text Alignment | HackerRank

Generate the Hackerrank logo with alignments in Python.

www.hackerrank.com

 

문제


You are given a partial code that is used for generating the HackerRank Logo of variable thickness.
Your task is to replace the blank (______) with rjust, ljust or center.

 

=> 주어진 코드의 _____ 에 rjust, ljust, center 중 하나를 넣어라

 

 

 

 

코드


#Replace all ______ with rjust, ljust or center. 

thickness = int(input()) #This must be an odd number # thickness는 5로 생각해보자
c = 'H'

#Top Cone
for i in range(thickness):
    print((c*i).rjust(thickness-1)+c+(c*i).ljust(thickness-1))

#Top Pillars.
for i in range(thickness+1):
    print((c*thickness).center(thickness*2)+(c*thickness).center(thickness*6))

#Middle Belt. 
for i in range((thickness+1)//2):
    print((c*thickness*5).center(thickness*6))    

#Bottom Pillars
for i in range(thickness+1):
    print((c*thickness).center(thickness*2)+(c*thickness).center(thickness*6))    

#Bottom Cone
for i in range(thickness):
    print(((c*(thickness-i-1)).rjust(thickness)+c+(c*(thickness-i-1)).ljust(thickness)).rjust(thickness*6))

 

 

 

 

노트


함수 이해

  • .ljust(width, '[채울 문자]'): 점(.)앞의 문자열을 왼쪽 정렬하고 문자열을 포함하여 width칸을 차지하도록 [채울문자]로 채움
width = 20
print ('HackerRank'.ljust(width,'-')) #HackerRank----------

 

  • .rjust(width, '[채울 문자]'): 점(.)앞의 문자열을 오른쪽 정렬하고 문자열을 포함하여 width칸을 차지하도록 [채울문자]로 채움
width = 20
print ('HackerRank'.rjust(width,'-')) #----------HackerRank

 

  • .center(width, '[채울 문자]'): 점(.)앞의 문자열을 가운데 정렬하고 문자열을 포함하여 width칸을 차지하도록 [채울문자]로 양쪽에 균등히 채움
width = 20
print ('HackerRank'.center(width,'-')) #-----HackerRank-----

 

 

상세풀이

#Top Cone
for i in range(thickness):
    print((c*i).rjust(thickness-1)+c+(c*i).ljust(thickness-1))
  • c를 i번 출력. 오른쪽 정렬 후 thickness(4 = 5-1)칸을 공백으로
  • c 출력
  • c를 i번 출력. 왼쪽 정렬 후 thickness(4 = 5-1)칸을 공백으로
더보기

OUTPUT

    H    
   HHH   
  HHHHH  
 HHHHHHH 
HHHHHHHHH

 

 

#Top Pillars & Bottom Pillars
for i in range(thickness+1):
    print((c*thickness).center(thickness*2)+(c*thickness).center(thickness*6))
  • Pillar: 기둥
  • c를 thickness번 출력. 양쪽으로 thickness(4 = 5-1)개 씩 공백
  • c를 thickness번 출력. 양쪽으로 thickness*6(4 * 6 = 24)개 공백(양쪽 각각 12개씩)
더보기
OUTPUT
  HHHHH               HHHHH             
  HHHHH               HHHHH             
  HHHHH               HHHHH             
  HHHHH               HHHHH             
  HHHHH               HHHHH             
  HHHHH               HHHHH​

 

 

#Middle Belt. 
for i in range((thickness+1)//2):
    print((c*thickness*5).center(thickness*6))
  • c를 thickness*5(4 * 5 = 20)번 출력. 양쪽으로 thickness*6(4 * 6 = 24)개 공백(양쪽 각각 12개씩)
  • 반복은 i((5+1) / 2 = 3)번
더보기
OUTPUT
  HHHHHHHHHHHHHHHHHHHHHHHHH   
  HHHHHHHHHHHHHHHHHHHHHHHHH   
  HHHHHHHHHHHHHHHHHHHHHHHHH​

 

 

#Bottom Cone
for i in range(thickness):
    print(
        (
        (c*(thickness-i-1)).rjust(thickness)+c+(c*(thickness-i-1)).ljust(thickness)
        ).rjust(thickness*6)
        )
  • c를 thickness-1-i(4-i)번 출력. 오른쪽 정렬 후 thickness(5)칸을 공백으로
  • c 한 번 출력
  • c를 thickness-1-i(4-i)번 출력. 왼쪽 정렬 후 thickness(5)칸을 공백으로
  • 위의 삼단계를 오른쪽 정렬하고 양쪽으로 thickness*6(4 * 6 = 24)개 공백(양쪽 각각 12개씩)

 

 

 

 

 

참조


 

HackerRank | Text Alignment

문자 배열 출력, 정돈된 형식으로 출력하거나, 굳이 배열을 짜서 출력 할 필요까지는 없을 때 유용할 듯. 개인적으로는 GUI에서 굳이 위치를 맞추기 위해 좌표를 구상하거나 크기를 잡을 필요가

developer-ai.tistory.com