오늘은 2024년도 크리스마스 입니다. 그런데 사무실에 나와 앉아 있습니다. 사람들이 없는 조용한 사무실이 평화롭게 느껴져 옵니다. 크리스마스니까 잠시 일손을 멈추고 언젠가 옛날 옛적 고리짝에 C언어 알고리즘 수업시간에 들었던 것 같은, 별찍기 예제를 이용해서 크리스마스 선물겸 퀴즈 풀이를 한번 해보기로 합니다.(이 무슨 지지리 궁상...)
목표 : 반복문을 이용해서 아래와 같은 크리스마스 트리를 만들어 봅시다.
Quiz 1 : 첫 번째 트리 모양
#
###
#####
#######
#########
Quiz 2 : 두 번째 트리 모양(우측 정렬)
#
###
#####
#######
#########
Quiz 3 : 세 번째 트리 모양(중앙 정렬)
#
###
#####
#######
#########
1. 왼쪽 정렬 형태의 트리
왼쪽 정렬은 Default 이니까, 일단 반복문을 이용해서 코드를 작성해봅시다. 간단한 예제니까 함수를 사용해서 작성해보았습니다.
def create_christmas_tree(height):
for i in range(height):
# 각 층의 # 개수는 2 * i + 1
hashs = 2 * i + 1
print('#' * hashs)
height = int(input('트리의 층수를 입력하세요: '))
create_christmas_tree(height)
일단은 간단한 형태이니까, 별 문제 없이 만들었습니다.
터미널에서 코드를 실행을 시켜보면, 결과는 아래와 같습니다.(0층을 입력하는 경우의 에러처리는 상남자라서 생략!)
일단은 여기까지는 연습문제라고 생각하고, 두 번째 퀴즈를 풀어보기로 합니다.
2. 오른쪽 정렬 형태의 트리
오른쪽으로 정렬을 한다..? 잠시 생각을 해봅시다! 최대 넓이를 고려해야 하니, 뭔가 사용자가 입력하는 층수가 힌트가 되겠군요!
직접 코드를 작성해보신 후 다음으로 넘어가시기를 바랍니다.
저는 아래와 같이 코드를 작성했습니다.
def create_christmas_tree(height):
# 최대 너비 계산 (마지막 줄의 # 개수)
max_width = 2 * (height - 1) + 1
for i in range(height):
hashs = 2 * i + 1
spaces = max_width - hashs
print(' ' * spaces + '#' * hashs)
height = int(input('트리의 층수를 입력하세요: '))
create_christmas_tree(height)
터미널에서 실행해보니, 제대로 동작하는 것 같습니다.
3. 중앙 정렬 형태의 트리
아마도 이번 퀴즈가 가장 어렵게 느껴질 수도 있겠습니다만.. 조금만 고민을 해보면 충분히 해결할 수 있을 것 같습니다.
코드는 아래와 같이 변경해서 작성해보았습니다.
def create_christmas_tree(height):
for i in range(height):
hashs = 2 * i + 1
spaces = height - i - 1
print(' ' * spaces + '#' * hashs)
height = int(input('트리의 층수를 입력하세요: '))
create_christmas_tree(height)
알고리즘은 생각보다 간단하죠?
마지막 문제니까 이번에는 10층 짜리 트리를 만드는 것으로 실행을 해보았습니다.
원하던 모양으로 잘 출력이 되었습니다.^^ 내친 김에 썸네일 각을 한번 잡아보도록 합니다.
포스팅 대표 이미지로 사용해야겠습니다. 위에 놓으면 답안이 노출되니 그냥 아래에 놓아두도록 합니다.
마치며
크리스마스 선물로 잠시 저에게 코딩 퀴즈를 선물해보았습니다. 그래도 잠시 머리를 굴려보니 재미있는 시간이었습니다.^^;
그럼 이제 다시 업무를 재개해보도록 하겠습니다 ! 으라차차차!
Merry Christ-mas !
오늘도 즐거운 코딩생활, 즐코딩.
KINcoding
'Python' 카테고리의 다른 글
파이썬으로 QR 코드 생성하기(ft. qrcode 모듈) (0) | 2023.07.06 |
---|
댓글