python 라틴 마방진 표 형태로 출력하기(제발 도와주세요ㅠㅠㅠㅠ)

조회수 1389회
//v=1
n=int(input("마방진의 행과 열을 무엇으로 할지 입력하시오(3이상 홀수);"))
h=(n+1)/2
k=1
print (k,"(",v,",",h,")")
while k<n*n:
    k+=1
    if(k%n==1):
        h-=1
    else:
        v-=1
        h-=1
        if(v<1):
            v=n
        if(h<1):
            h=n
    print (k,"(",v,",",h,")")

제가 이렇게 홀수 라틴 마방진을 만드는 프로그램을 작성하였습니다. 그런데 이 프로그램을 실행하면, 마방진이 표 형태로 나오지 않고 숫자(행,열) 식으로 나오게 됩니다. 예를 들어 5차 마방진을 제 프로그램으로 만들게 되면, 우리가 흔히 보는 표 형태로 출력 되지 않고 13(1,1) 7(1,2) 1(1,3) 25(1,4) 19(1,5) 18(2,1)... 식으로 (숫자)(행, 열) 형태로 출력 되네요..... 제가 원하는 표 처럼 출력되게 하는 방법은 없을까요???? 제발 도와주세요ㅠㅠㅠㅠ




  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 혹시 이런 식의 출력을 원하시나요..?

    [5, 1, 9]
    [8, 4, 3]
    [2, 7, 6]
    
    v=1
    n=int(input("마방진의 행과 열을 무엇으로 할지 입력하시오(3이상 홀수);"))
    
    pp = [ [0 for _ in range(n)]  for _ in range(n)   ]
    
    h=(n+1)//2
    k=1
    ###  print (k,"(",v,",",h,")")
    pp[v-1][h-1] = k
    
    while k<n*n:
        k+=1
        if(k%n==1):
            h-=1
        else:
            v-=1
            h-=1
            if(v<1):
                v=n
            if(h<1):
                h=n
        # print (k,"(",v,",",h,")")
        pp[v-1][h-1] = k
    
    for m in range(n) :
        print(pp[m])
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 정말 너무 너무 감사드려요!!! 알 수 없는 사용자 2018.3.25 09:04
    • 이것 때문에 끙끙 앓았는데, 정말 좋으신 분 같아요~~ 알 수 없는 사용자 2018.3.25 09:04
    • 그리고 정말 죄송한데 (제가 초보라서..) 어떤 원리인지 설명 부탁 가능할까요?? 알 수 없는 사용자 2018.3.25 09:06
    • 저도 소스코드를 자세히 본게 아니라 출력형태가 값,좌표 형태라 미리 2차원 리스트를 만들고 v,h를 인덱스로 해서 리스트요소값을 설정한 것 뿐입니다. 알 수 없는 사용자 2018.3.25 14:25
    • 혹시 pp = [ [0 for _ in range(n)] for _ in range(n) ] 이 구문이 낯설다면 인터넷에 리스트 컴프리헨션 을 검색하면 자세한 설명이 있습니다. 알 수 없는 사용자 2018.3.25 14:27

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

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

(ಠ_ಠ)
(ಠ‿ಠ)