Prepare > Python > Strings > Text Alignment
2023. 7. 9. 21:51ㆍHackerRank-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
'HackerRank-Python' 카테고리의 다른 글
Prepare > Python > Strings > Designer Door Mat (0) | 2023.07.11 |
---|---|
Prepare > Python > Strings > Text Wrap (0) | 2023.07.10 |
Prepare > Python > Strings > String Validators (0) | 2023.07.08 |
Prepare > Python > Strings > Find a string (0) | 2023.07.06 |
Prepare > Python > Basic Data Types > Tuples (0) | 2023.07.05 |