for 구문 중복 해결방법

for 구문 중복 해결방법

QA

for 구문 중복 해결방법

본문

s(start)부터 e(end)까지의 숫자만 사용해서 각 자리의 숫자의 합이 n이 되는 다섯 자리 자연수를 구하는 프로그램을 짜는 중이었습니다.

그런데 중첩된 for 구문 때문에 동일한 숫자가 여러 번 출력되는데 이 부분은 어떻게 해결할 수 있을까요?

-----------------

import sys

s = int(sys.argv[1])

e = int(sys.argv[2])

n = int(sys.argv[3])

cnt = 0       # 이거는 자연수가 5개 마다 줄바꿈을 하려고 쓴거에요

i=j=k=l=m=s

 

for i in range(s, e+1):

    if i+j+k+l+m == n:

        print("%s%s%s%s%s" %(i,j,k,l,m), end=" ")

        cnt +=1

        if cnt % 5 == 0:

            print("")

    for j in range(s, e+1):

        if i+j+k+l+m == n:

            print("%s%s%s%s%s" %(i,j,k,l,m), end=" ")

            cnt +=1

            if cnt % 5 == 0:

                print("")

        for k in range(s, e+1):

            if i+j+k+l+m == n:

                print("%s%s%s%s%s" %(i,j,k,l,m), end=" ")

                cnt +=1

                if cnt % 5 == 0:

                    print("")

            for l in range(s, e+1):

                if i+j+k+l+m == n:

                    print("%s%s%s%s%s" %(i,j,k,l,m), end=" ")

                    cnt +=1

                    if cnt % 5 == 0:

                        print("")

                for m in range(s, e+1):

                    if i+j+k+l+m == n:

                        print("%s%s%s%s%s" %(i,j,k,l,m), end=" ")

                        cnt +=1

                        if cnt % 5 == 0:

                            print("")

------------------------

1 2 5를 입력하면 원래는

11111 이라고 출력되어야 하는데,

 

11111 11111 11111 11111 11111

이렇게 나옵니다. 해결책 부탁드려요..! 감사합니다

이 질문에 댓글 쓰기 :

답변 1

안녕하세요?

 

제가 질문의 의도를 정확히 파악했는지 모르겠지만

 

각 for 문마다 print()를 사용했기 때문에 발생하는 결과라고 생각되네요~

 

다음과 같이 수정하면 중복되어 출력되지 않네요 ^^

 

그럼 즐거운 불금 되세요!

 


import sys
 
s, e, n = int(sys.argv[1]), int(sys.argv[2]), int(sys.argv[3])
i, j, k, l, m = [s] * 5
cnt = 0
 
for i in range(s, e + 1):
    for j in range(s, e + 1):
        for k in range(s, e + 1):
            for l in range(s, e + 1):
                for m in range(s, e + 1):
                    if i + j + k + l + m == n:
                        print(f'{i}{j}{k}{l}{m}', end=' ')
                        cnt +=1
                        if cnt % 5 == 0:
                            print('\n')
답변을 작성하시기 전에 로그인 해주세요.
전체 78
QA 내용 검색
filter #for ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT