1. 문제

사각형의 높이 H와 너비 W가 주어지면 H행 W열의 사각형 모양으로 1부터 H*W까지 숫자를 차례대로 출력 하시오.

숫자가 출력되는 순서는 첫줄의 왼쪽에서 오른쪽으로 1부터 차례대로 너비 W 만큼 출력한 후

다음 줄로 바꾸어서 다시 왼쪽에서 오른쪽으로 1씩 증가하면서 출력하는 방법으로 H번 줄까지 반복한다.

 

 

 


2. 풀이

n = int(input())

for i in range(1, n+1):
    k = list(map(int, input().split()))
    q = k[1]
    w = k[0] * k[1]  # 6
    print(f'#{i}')
    print('1 ', end='')
    for j in range(2, k[0]*k[1]+1):
        if 1 < ((10 + j) % 10) < k[1]+1:
            print(f'{j} ', end='')
        elif (((10 + j) % 10) == q+1) or (((10 + j) % 10) == 1):
            print(f'\n{j} ', end='')       
        else:
            print(f'{j} ', end='')
    print()

 

 


3. 해설

2022-10-24 알림

  • 여러분 이 글을 요새 많이 보시던데 이 풀이 방식 파이썬 배우자마자 푼거라 좀 이상하게 풀었어요...
  • 다른 분들 코드 참조해주세요....ㅠㅠ

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

일단, 2 3, 4 5 등으로 받은 숫자를 정수화시켜 리스트에 저장한다.

리스트의 항목은 [2, 3] 등으로 저장될 것이다.

첫 번째 숫자가 세로의 길이, 두 번째 숫자가 가로의 길이.

 

어느 숫자건 1은 무조건 나올테니 for문 돌리기 전에 미리 숫자 1을 출력한다.

예시의 출력 결과를 보면 알겠지만, 배열된 숫자는 입력받은 숫자 두 개를 곱한 값 까지 나열된다.

이 곱한 값을 2부터 for문으로 돌려준다.

 

숫자를 10진법으로 표기하기 위해 조건문에 (10+j) % 10 을 추가했다. 이는 1이면 1, 11이면 1이 된다.

이 숫자가 가로의 길이를 넘어가면 한번 \n을 넣어줘야 되기 때문에 (10+j) % 10가 가로의 길이에 1을 던한값과 

같거나 10이상의 숫자열이 배열될때 1이 되었을때 \n을 한번 넣어준다.

 

\n을 언제 넣어야되는지는 

elif부분을 없애고 코드를 돌려보면 쉽게 알 수 있을 것이다.

 

4.  

  • 여러분 이 글을 요새 많이 보시던데 이 풀이 방식 파이썬 배우자마자 푼거라 좀 이상하게 풀었어요...
  • 다른 분들 코드 참조해주세요....ㅠㅠ

 

복사했습니다!