본문 바로가기
코딩테스트/[python]정올

[python] 정올 2046 : 숫자사각형4

by o_oo 2022. 3. 17.

서론

없음.


문제

http://jungol.co.kr/bbs/board.php?bo_table=pbank&code=2046&sca=2010 

 

JUNGOL

 

www.jungol.co.kr


문제

정사각형의 한 변의 길이 n과 종류 m을 입력받은 후 다음과 같은 정사각형 형태로 출력하는 프로그램을 작성하시오.

 

< 처리조건 >

종류 2번의 경우 숫자의 진행 순서는 처음에 왼쪽에서 오른쪽으로 너비 n만큼 진행 한 후 방향을 바꾸어서 이를 반복한다.

 

입력형식

정사각형 한 변의 길이 n(n의 범위는 100 이하의 정수)과 종류 m(m은 1부터 3사이의 정수)을 입력받는다.
 

출력형식

위에서 언급한 3가지 종류를 입력에서 한 변의 길이 n과 종류 m에 맞춰서 출력한다. 숫자 사이는 공백으로 구분하여 출력한다.

나의 풀이

while 1:
    n, m = map(int, input().split())
    
    if n < 0 or n > 100 or m < 1 or m > 3:
        continue
    else:
        if m == 1:
            for i in range(1, n+1):
                for j in range(0, n):
                    print(i, end=' ' )
                print()
        elif m == 2:
            for i in range(1, n+1):
                for j in range(1, n+1):
                    print(n-j+1 if i % 2 == 0 else j, end=' ' )
                print()
        elif m == 3:
            for i in range(1, n+1):
                for j in range(1, n+1):
                    print(j*i, end=' ' )
                print()
        break

뭐 풀기는 했다만... 개인적으로 만족스럽지는 않다. 파이썬이면 숏코딩하기 쉬울거같은데(숏코딩이 무조건 좋은건 아님) 코드가 일단 너무 길다. 일단 애초에 문제가 3개의 case가 존재하니까 3가지 결과물이 있어야해서 길어지는건 당연한거 같지만 만족스럽지는 않단말이지...

 

이번에도 그냥 print에서 수식을 써서 출력했다.

 


+ 피드백과 새로운 풀이 방법은 언제든지 환영입니다!

댓글