본문 바로가기
Algorithm/자료구조와 함께 배우는 알고리즘

반복하는 알고리즘 (2)

by re-hwi 2022. 7. 18.

문제 6. 특정 수가 나오면 중단하는 프로그램

import random

n = int(input('난수의 개수 입력 :'))

for i in range (n):
    r = random.randint(10,99)
    print(r, end=' ')

    if r == 13:
        print('\n프로그램 종료')
        break

else :
    print('\n난수생성 종료')

파이썬의 라이브러리인 random 을 이용해 랜덤한 수를 만드나 특정 수 (8) 가 나오면 자동으로 종료되는 프로그램이다. 

 

이 때 프로그램 종료와 난수 생성 종료 2가지가 있는데 난수 생성 종료는 n가지를 전부 실행하고 종료하는 것이고 만약 n 가지를 실행 하던 중 13이 나오면 바로 종료되는 것이 프로그램 종료 (break) 이다.

 

문제 7. 특정 수를 건너뛰고 출력하기

for i in range(1,13):
	if i == 8:
    	continue
    print(i,end = ' ')
    
print()

이 코드를 분석해보면 만약 8이 나온다면 다시 for 문으로 들어가 print() 함수를 거치지 않기 때문에 8을 제외한 1부터 12까지의 수가 출력된다. 

 

하지만 만약 수가 커진다면 1부터 n까지의 모든 수를 8이 맞는지 대입해봐야 하기 때문에 좋은 알고리즘이라고 할 수 없다.

 

문제 7-1. 특정 수를 건너뛰고 출력하기 2 

for i in list(range(1,8)) + list(range(9,13)):
	print(i,end=' ')
print()

이 문제는 같은 문제이지만 다른 방법으로 문제를 풀었다.

 

처음 방법은 8이 맞는지 확인한 후 만약 8이 아니라면 출력하는 방식이였지만 이 방식은 1부터 7까지의 리스트와 9부터 12 까지의 리스트를 더함으로써 8을 제외하는 방법이다. 

 

문제 8. 구구단

# 구구단을 외자!

for i in range(1,10):
    col = i
    print(col,'단')

    for j in range(1,10):
        row = j
        print(col ,'*' ,row, '=' ,i * j)
    print()

 

 

구구단은 1학년때 학교에서 배웠다. 당시에는 그냥 교수님이 하시는 말씀대로 i가 행이고 j가 열이다 그냥 이렇게 외웠었는데 이제는 정말 쉽게 만들 수 있을 정도로 성장한 것 같아 뿌듯하다. 

 

i가 1이 증가하면 그 동안 j는 1부터 9까지 증가하고 j가 9가 되면 다시 i가 1이 증가한다. 이런 원리로 구구단이 완성된다.

순서도는 다음과 같다. 

반응형

댓글