[프로그래머스] n^2 배열 자르기

최동혁·2022년 12월 18일
0

프로그래머스

목록 보기
30/68

풀이 방법

몫과 나머지를 이용해서 배열에 들어갈 숫자를 계산해준다.
n^2의 데이터 사이즈가 1000만의 제곱이기 때문에 무조건 2중 루프나 n^2의 범위를 넘기면 안된다
우리가 필요한 것은 left부터 right 사이의 배열값이기 때문에 index를 이용해 수학적 규칙을 찾으면 된다.

  1. 나머지가 0일때는 n값으로 전부 채워준다.
    • 왜냐면 n이 4일때 index + 1을 해준 값에서 4가 들어가는 곳은 4, 8, 12, 13, 14, 15, 16이기 때문이다.
    • 그래서 행과 열 중에 열만 채워준것이다.
  2. 그리고 몫 + 1이 나머지 값보다 크거나 같다면 그 곳은 몫 + 1로 채워준다.
    • 이것은 행을 생각한 것이다.
    • 행이 2번째 행이라면, 나머지가 몫 + 1보다 작거나 같을 때 까지 2로 채워준다.
  3. 나머지 빈칸은 나머지 값으로 채워준다.
    • 이것은 열을 생각한 것이다.
    • 2행일 때, 2를 1열, 2열까지 채우고 3열은 몫 + 1보다 크기 때문에 n으로 나눈 나머지 값을 채워주면 된다.

풀이 코드

def solution(n, left, right):
    answer = []
    for i in range(left, right + 1):
        share = (i + 1) // n
        remainder = (i + 1) % n
        if remainder == 0:
            answer.append(n)
        elif share + 1 >= remainder:
            answer.append(share + 1)
        else:
            answer.append(remainder)   
    return answer
profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글