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

그저늅늅·2022년 2월 7일
0

문제풀이

목록 보기
5/12
post-custom-banner

문제

n^2 배열 자르기

정수 n, left, right가 주어진다.

  • 아래 그림과 같은 n행 n열의 2차원 배열을 만든다.
  • 아래 그림과 같이 1행, 2행, ..., n행을 잘라내어 이어붙인 새로운 1차원 배열을 만든다.
  • 새로운 1차원 배열을 arr이라 할 때, arr[left ~ right]를 구한다.

아이디어

핵심 아이디어

  1. 2차원 배열 접근을 1차원 배열 접근하듯이 한다.
    A[ROW][COL] -> B[ROW * N + COL]
  2. 문제로 주어진 2차원 배열의 특징을 찾는다.
    A[ROW][COL] = max(ROW, COL) + 1
  3. 1차원 배열에서 범위 left ~ right 사이의 인덱스i가 2차원 배열일때 어느row, col의 위치에 있을지 찾는다.
    n = 4, i = 7 일 경우 row = 7 // 4 = 1, col = 7 % 4 = 3에 있다.
    즉, row = i // n, col = i % n과 같다.

코드

def solution(n, left, right):
    answer = [0 for _ in range(right - left + 1)]
    for i in range(right - left + 1):
        r = (i + left) // n
        c = (i + left) % n
        answer[i] = max(r, c) + 1
        # 한줄로도 가능하다.
        # answer[i] = max( (i + left) // n, (i + left) % n) ) + 1
    return answer
profile
양현석
post-custom-banner

0개의 댓글