게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
별찍기 문제 를 규칙성으로 풀었는데 재귀함수를 이용한 풀이가 알고싶습니다
게시물ID : programmer_20566짧은주소 복사하기
작성자 : Josee
추천 : 0
조회수 : 688회
댓글수 : 3개
등록시간 : 2017/05/15 04:22:40
옵션
  • 본인삭제금지
n=3*2^m 일때 별을 찍는 문제인데요
저는 규칙성을 이용해서


n=eval(input())
a=" "*(2*n)
space=[]
for i in range(n):
    space.append(a)
def star(spot,x):
    spot=spot[:x]+'*'+spot[x+1:]
    return spot
space[0]=star(space[0],n-1)
for j in range(n-2):
    if j%3==0:
        for k in range(2*n-2):
            if space[j][k]=='*':
                space[j + 1] = star(space[j + 1], k - 1)
                space[j + 1] = star(space[j + 1], k + 1)
                space[j + 2] = star(space[j + 2], k - 2)
                space[j + 2] = star(space[j + 2], k - 1)
                space[j + 2] = star(space[j + 2], k)
                space[j + 2] = star(space[j + 2], k + 1)
                space[j + 2] = star(space[j + 2], k + 2)
            else:
                pass
    elif j%3==2:
        for k in range(1,2*n-1):
            if space[j][k-1]=='*' and space[j][k+1]==' ' and space[j][k]==' ':
                space[j + 1] = star(space[j + 1], k)
            elif space[j][k-1]==' ' and space[j][k+1]=='*' and space[j][k]==' ':
                space[j + 1] = star(space[j + 1], k)
            else:
                pass
    else:
        pass

for i in range(n):
    print(space[i])

이렇게 코드를 짜서 문제를 풀었는데 더 좋은 풀이법은 재귀함수를 이용하라고 나와 있어서요

재귀함수가 뭔지는 알고 있는데 이걸 코딩으로 짜려고 생각해봐도 이게 머릿속에서는 되는데

코딩으로 하려니깐 어떻게 해야할지 잘 모르겠어서 여쭤봅니다.



n=24일때 답은 이런식으로 나오게 됩니다.
* * * ***** * * * * * * ***** ***** * * * * * * ***** ***** * * * * * * * * * * * * ***** ***** ***** ***** * * * * * * ***** ***** * * * * * * * * * * * * ***** ***** ***** ***** * * * * * * * * * * * * ***** ***** ***** ***** * * * * * * * * * * * * * * * * * * * * * * * * ***** ***** ***** ***** ***** ***** ***** *****
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호