파이썬 숫자 계단식 출력 질문

조회수 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이므로, 두번째 라인은 23을 찍고 끝난다. (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;
    
    • 결과

    이미지

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

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

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

(ಠ_ಠ)
(ಠ‿ಠ)