(프로그래머/Python) n^2 배열 다듬기

(문제를 해결하다)

  • 배열의 좌표가 (i,j)인 경우 배열의 요소 값은 좌표 중 큰 값입니다.
  • 따라서 왼쪽과 오른쪽을 포함하는 열만 배열로 만들고 배열의 좌표 중 큰 값을 배열 요소로 만들었습니다.
  • 그러나 시간 복잡도 측면에서 코드 성능이 좋지 않습니다. 또한 왼쪽과 오른쪽을 포함하는 컬럼만 생성하면 되므로 출력할 영역을 다시 계산해야 합니다.

** 하지만 좋은 생각이 들었습니다. 배열의 크기는 3×3이고 5번째 좌표를 알고 싶다면 그 좌표는 (5//3+1.5%3+1)입니다.

(+1인 이유는 좌표가 (0,0)이 아닌 (1,1)에서 계산되기 때문입니다.)

두 번째 코드는 위의 아이디어를 따릅니다.

(코드 풀기)

def solution(n, left, right):
    answer = ((i, j) for i in range(int(left // n) + 1, int(right // n) + 2) for j in range(1, n + 1))
    l = left - (int(left // n) * n)
    r = l + (right - left)
    return list(map(max, answer(l:r + 1)))

def solution(n, left, right):
    return (max(i // n, i % n) + 1 for i in range(left, right + 1))