Python/Algorithm
[Python_Algorithm]반복 과정에서 조건 판단하기 3(자료구조와 함께 배우는 알고리즘 입문)
bangle0621
2021. 1. 9. 11:43
*를 n개 출력하고 w마다 줄바꿈하는 두가지의 방법이 있다.
방법1.
# *를 n개 출력하되 w개마다 줄바꿈하기1
print('*를 출력합니다.')
n = int(input('몇개를 출력할까요?'))
w = int(input('몇개마다 줄바꿈할까요?'))
for i in range(n):
print('*',end='')
if i % w == w -1:
print()
if n % w:
print()

방법1은 for 문안에 if가 들어가 있기에 for 문이 실행될 때마다 if문도 실행되게 된다
i는 0부터 시작하기에 i%W(나머지) 가 w-1과 같을때 줄바꿈을 하게 된다.
마지막 단락의 if 문은 n이 w의 배수가 아닌 수일때 나머지 부분의 계산을 하여 줄바꿈을 한다.
:0을 제외한 숫자는 true 니까 맨 밑에 부분이 0이 아닌이상 개행이 이뤄진다.(배수가 아닌이상)
위의 for문에서
일단 n번만큼 for문이 실행되기에 효율적이지 못하다.
방법2.
# *를 n개 출력하되 w개마다 줄바꿈하기2
print('*를 출력합니다')
n=int(input('몇 개를 출력할까요?:'))
w=int(input('몇 개마다 줄바꿈할까요?:'))
for _ in range(n//w): #n//w 번 반복
print('*'*w)
rest = n%w
if rest:
print('*'*rest)
방법2는 for문의 반복 횟수부터 차이가 난다.
n//w 몫만큼 반복하도록 하였고 반복문 안에 줄에 나오는 *가 모두 출력되어지기 때문에 반복 횟수가 훨씬 줄어든다.
배수가 아닌 경우의 나머지는 rest에서 해결해준다.
rest 라는 변수 안에 n%w 나머지 부분을 넣고
rest가 0이 아닌(배수가 아닌 경우)에 나머지 부분의 수만큼(rest를 곱해주니까) *가 출력되어진다.