파이썬 숫자 계단식 출력 질문
조회수 3393회
안녕하세요 요즘 파이썬 문제 풀어보다가 질문이 있어서 글올립니다.
자연수 N을 입력받아서 1~N까지 첫번째 줄에는 1개, 두번째 줄에는 2개, 세번째 줄에는 3개 이렇게 출력하는게 목적이고 문제를 풀었습니다.
x = int(input())
n=1
for i in range(1, x+1):
sum = (n+1)*n // 2
print(i , end = ' ')
if(sum == i):
print()
n+=1
실행하면
1
23
456
78910
잘나옵니다 그런데 sum = (n+1)*n//2
이 부분은 친구한테 도움을 받아서 풀어낸 부분입니다.
그래서 질문이 저런 공식을 만들지 않고 다중 for문을 사용해서 풀어내는 방법이 있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
2 답변
-
그러니까
n
을 입력받으면 총n
개의 라인이 출력되는 거지요?
그리고k
번째 라인에는 항상k
개의 자연수가 찍히는 거구요.그러면 반복해야 하는 것은 두 가지.
1.
1
부터n
까지 돈다. (한 줄씩 출력하기 위해서)
2. 현재 라인이k
번째 라인이라고 했을 때,1
부터k
까지 돈다. (숫자를 하나씩 출력하기 위해서)그리고 마지막으로 찍은 숫자를 별도 변수
p
에 저장해놓고 업데이트하면서 돌면 좀 편하겠지요.- 첫번째 라인은
1
을 찍고 끝난다. (k = 1
이므로 1부터 1까지 다 돌았음) p = 1
이므로, 두번째 라인은2
와3
을 찍고 끝난다. (k = 2
이므로 1부터 2까지p
에 더하면서 찍는다.)- 세번째 라인은
p = 3
이므로 1부터 3까지 돌면서... 이하 생략
자! 친구분의 콧대를 납작하게 해줍시다.
- 그러니까 n을 입력받으면 총 n개의 라인이 출력되는 거지요? -> 아닙니다 10입력받았다고 10개의 줄을 출력하는건 아닙니다 알 수 없는 사용자 2020.11.9 10:53
- 그러면 n은 뭔가용?? 머 예를 들어서 n=4 라고하면 1 찍고 2, 3 찍고 4 찍고 셋째줄 찍다말고 끝나는거에요?? (사실 그렇다 하더라도 기본 개념은 크게 안변하지만) 엽토군 2020.11.9 11:10
- 첫번째 라인은
-
아래 코드 참고하세요.
- 코드
x = int(input()) line_number=1 # 줄 번호 output_count=0 # 줄에서의 글자 출력 갯수 for i in range(1, x+1): print(i , end = ' ') output_count+=1 if(line_number == output_count): print() line_number+=1 output_count=0;
- 결과
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력