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')