강의로 돌아가기
cskhw

파이썬 답

힌트는 조건에 있습니다.
right - left > 105 이라 나와 있습니다.
이는 제한된 시간복잡도를 표시하고 있습니다.

즉, 이 문제는 저 시간안에 풀 수 있는 문제라는 의미입니다.
-> left와 right를 활용하라는 힌트가 될 수 있습니다.

각 배열의 패턴을 보면 1234,2234,3334,4444 이렇게 i가 i번 반복되고 이후로 n까지 증가하는 모습을 볼 수 있습니다.

그러면 left, right를 x // n, x % n으로 각 행, 열을 구해주고(lr, lc, rr, rc)
lr~rr 사이에서 i * i, i+1, i+2, ..., n 로 리스트를 만들고 모두 합쳐주면 left, right를 포함한 행과 사이 행을 모두 포함하고
flatmap을 한 배열이 완성됩니다.

이 배열에서 lc ~ (rr-lr)*n+rc+1 만큼을 잘라주면 답이 나옵니다.

작성중인 코드―solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def solution(n, left, right):
    answer = []
    lr, lc = left // n, left % n
    rr, rc = right // n, right % n

    a = []

    for i in range(lr, rr+1):
        j = i+1
        a += ([j] * j + list(range(j+1, n+1)))

    answer = a[lc:(rr-lr)*n+rc+1]    

    return answer
  • baekwoo11@gmail.com

    amen

    baekwoo11@gmail.com―2025.01.03 00:09
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다.