대각선으로 숫자 채우기

이현진·2023년 3월 11일
0

알고리즘

목록 보기
5/9
post-thumbnail

[codetree]
https://www.codetree.ai/missions/4/problems/diagonal-numbering/

평소 풀던 이중반복문 문제의 일반적인 행, 열 진행방향과 달랐기에 보자마자 당황한 문제였다.

원래의 행, 열 방향을 지키면서 적히는 값이 커지는 규칙을 이용해 풀려하니 조건식이 굉장히 복잡해졌다.

완전탐색기법으로 반복문을 한번 더 돌리면, 쉽게 해결될 문제였다. 간단히 1 부터 수가 커지는 순서대로의 그 좌표값을 보면, 대각선 안에서 행(r) 값과 열(c)의 값의 합이 일정한 것을 알 수 있다.

따라서 한번 더 반복문을 돌면서 0 부터 합이 일치하는 순서대로 수를 기입하면 해결할 수 있었다.

n, m = map(int, input().split())
arr = [[0 for _ in range(m)] for _ in range(n)]

cnt = 1
for c in range(n+m):
    for i in range(n):
        for j in range(m):
            if c == i + j:
                arr[i][j] = cnt
                cnt += 1


for i in range(n):
    for j in range(m):
        print(arr[i][j], end=' ')
    print()
profile
세상의 모든 지식을 담을 때까지

0개의 댓글