Home 우박수 3n+1 출력하기 + 역순출력하기
Post
Cancel

우박수 3n+1 출력하기 + 역순출력하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
n = int(input())

def woonum(num):
    if num==1:
        print(num)
        return
    else:
        print(num)
        if num%2==1:
            return woonum(int(num*3+1))
        else:
            return woonum(int(num/2))

woonum(n)

코테처음부터 하면서 유형별로 파는데 재귀는 이제 지겨운 수준…..

처음 값이 들어와서 n이 홀수면 n*3+1을하고 짝수면 2를 나누어 줍니다. 그리고 이를 계속 출력하기

n이 1이라면 1을 출력하고 끝내고 아니라면 계속 재귀로 불러 와야지요

이제 순서대로 출력을 했는데 이번에는 반대로 역순 출력을 하게 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
n = int(input())
lis=[]

def woonum(num):
    global lis
    if num==1:
        lis.append(num)
        return lis
    else:
        lis.append(num)
        if num%2==1:
            return woonum(int(num*3+1))
        else:
            return woonum(int(num/2))

def stack(num):
    if len(num)!=0:
        print(num.pop())
        return stack(num)
    else:
        return
        
stack(woonum(n))

크게 다른 것도 없습니다. 리스트에다가 쭉 저장하시고 슬라이싱으로 역순 출력하셔도되고

이번에는 스택을 이용한 함수를 하나 만들었습니다. 스택에 내용이 있다면 pop로 뱉어내고 재귀 호출해서 스택이 빌때까지 반복적으로 호출하게 하는 것입니다.

파이썬 스택을 이용한 문자열 역순 출력 프로그램

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.