그레이코드 출력

조회수 375회

그레이 코드 출력하는 알고리즘 부분에서 막혀서 질문 드려봅니다.

def gray_calc4(text, n):
    if n == 1:
        for i in range(0, 2):
            if i == 1:
                print(text + "1")
            elif i == 0:
                print(text + "0")
    elif n > 1:
        for m in range(0, 2):
            if m == 1:
                text = text + '1'
                gray_calc4(text, n-1)
            elif m == 0:
                text = text + '  ==0==   '
                gray_calc4(text, n-1)

def gray_calc3(n):
    for i in range(0, 2):
        if i == 1:
            text = '1'
            gray_calc4(text, n-1)
        elif i == 0:
            text = '0'
            gray_calc4(text, n-1)

def gray_code3():
    n = input("n bit gray : ")
    n = int(n)

    gray_calc3(n)

이렇게 작성 하고 gray_code3() 을 실행하면 출력이 이뤄지는데,

중간에 ==0== 로 제가 출력 표기한 부분이 원래는 안 나올 때 안 나와야 하는데, 모든 부분에서 다 나옵니다. (저는 n=3으로 입력하고 테스트를 했습니다. )

도저히 왜 저 부분이 모든 부분에 항상 다 들어가는지를 찾지 못해 해결하지 못하고 있습니다.

어떤 원인으로 해당 부분이 계속 나왔는지가 궁금합니다.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    이와 같은 질문을 올리실 때에는 의도했던 결과가 어떤것이었는지, 실제 결과와 어떻게 다른지도 함께 올려주시는 것이 좋습니다.

    일단 gray_calc4 함수를 보면, m == 0일 때 text==0==를 추가한 상태로 덮어씁니다.

    따라서 m == 1일 때 사용하는 text==0==이 추가된 문자열이고, 따라서 모든 경우에 ==0==이 나타나게 됩니다.

    이 부분 유의해서 수정해 보시면 되지 않을까 싶습니다.

    • 아하, 뭐가 문제인지 감이 잡히네요, 감사합니다. 반시 2021.3.10 16:04
    • 아 의도랑 결과를. 다음부터는 같이 작성하겠습니다. 반시 2021.3.10 16:05

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)