취뽀 기록

#열심히 살자 #취업 #공부

Python/[코드트리]

[코드트리] 2차원 배열과 패턴 > 격자 반대로 채우기(★)

hyunnn_00 2023. 7. 14. 15:46
n x n 크기의 격자에 정수를 채워넣으려고 합니다. 1부터 시작해서 차례대로 까지 채워넣는데, 다음 그림과 같이 오른쪽 아래에서 부터 위 아래 지그재그 방향으로 채워넣는 프로그램을 작성해보세요.

 

 

 


해설 알고리즘

# 변수 선언 및 입력
n = int(input())
answer = [
    [0 for _ in range(n)]
    for _ in range(n)
]
count = 1

# 격자를 채워줍니다.
for col in range(n - 1, -1, -1):
    if (n - 1 - col) % 2 == 0:
        # 이 케이스에는 아래에서 위로 값을 채워줍니다.
        for row in range(n - 1, -1, -1):
            answer[row][col] = count
            count += 1
    else:
        # 이 케이스에는 위에서 아래로 값을 채워줍니다.
        for row in range(n):
            answer[row][col] = count
            count += 1

# 출력:
for row in answer:
    for elem in row:
        print(elem, end=" ")
    print()
# 나의 풀이
n = int(input())

arr_2d = [
    [0 for _ in range(n)] for _ in range(n)
]

num = 1
if n % 2 == 0:
    for col in range(n-1, -1, -1):
        if col % 2 == 0:
            for row in range(n):
                arr_2d[row][col] = num 
                num += 1
        else:
            for row in range(n-1, -1, -1):
                arr_2d[row][col] = num 
                num += 1
else:
    for col in range(n-1, -1, -1):
        if col % 2 == 0:
            for row in range(n-1, -1, -1):
                arr_2d[row][col] = num 
                num += 1
        else:
            for row in range(n):
                arr_2d[row][col] = num 
                num += 1



# 출력
for row in range(n):
    for col in range(n):
        print(arr_2d[row][col], end = " ")
    print()