과제-1
1에서 n까지 자연수에 대한 3,6,9 게임 결과를 출력한다.
조건
- 반드시 함수를 이용한다.
하나의 숫자를 매개변수로 출력값을 리턴하는 함수를 작성한다.
그리고, 이 함수를 이용하여 1에서 n까지의 3,6,9 게임 프로그램을 작성한다. - 10 단위로 다음 줄에 출력한다.
실행 결과 예시
구현 결과
함수를 이용해서 해보라고 제시가 되었다.
하지만 백준 알고리즘처럼 러닝타임을 계산하는 게 아니기 때문에 클래스도 연습할 겸 아래와 같이 작성했다.
class game_369:
def __init__(self, num_user = 0):
self.num_user = num_user
self.num_arr = []
def f369(self, num): #숫자를 분해하여 3으로 나누어 떨어지는 수 찾기
ten = 10
num_old = 0
stop_signal = 1
count = 0
num_arr = []
index = 0
while stop_signal: #스탑 시그널이 0이 될 때 까지 반복6
if ten == 10: # 1의자리만 떼오기
num_arr.append(num%ten) #어팬드
else: # ten이 100의자리 검토 진입
num_arr.append((num%ten-num_old)//int(ten//10)) #십의자리와 백의자리... 계속 리스트에 어팬드
if num%ten - num == 0:
stop_signal = 0
else :
stop_signal = 1 #num arr에 0이 인가되면 종료
num_old = num%ten
ten = ten*10 #십의자리씩 계속 올리며 계산
index += 1
for i in range(0, len(num_arr), 1): #리스트의 마지막이 0이므로 제외하고 3과 나누어 계산
if num_arr[i] != 0 and num_arr[i] % 3 == 0:
count += 1
else:
pass
if count == 0:
result = num
self.num_arr.append(result)
else:
result = "짝"*count
self.num_arr.append(result)
def cal_369_game(self):
for i in range(1,self.num_user + 1,1):
self.f369(i)
def print_369_game(self, num):
for i in range(0, len(self.num_arr), 10): # 인덱스 0을 시작으로 n 길이의 전 까지, 10씩
print(' '.join(map(str, self.num_arr[i:i+10])))
num_user = int(input("369게임:어디까지 수행할까요? :"))
game = game_369(num_user)
game.cal_369_game()
game.print_369_game(num_user)
뭔가 알고리즘을 공부하면 훨씬 쉽게 구현할 수 있을 것 같다.
'코딩 > Python' 카테고리의 다른 글
[파이썬] 컴퓨터 비전 - 이미지 잘라내기 (0) | 2023.03.27 |
---|