애플파이썬

[프로그래머스] Lv.2 n^2 배열 자르기 (파이썬) 본문

카테고리 없음

[프로그래머스] Lv.2 n^2 배열 자르기 (파이썬)

유진파이 2025. 4. 1. 16:32

https://school.programmers.co.kr/learn/courses/30/lessons/87390

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제 설명

정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다.

  1. n행 n열 크기의 비어있는 2차원 배열을 만듭니다.
  2. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다.
    • 1행 1열부터 i행 i열까지의 영역 내의 모든 빈 칸을 숫자 i로 채웁니다.
  3. 1행, 2행, ..., n행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다.
  4. 새로운 1차원 배열을 arr이라 할 때, arr[left], arr[left+1], ..., arr[right]만 남기고 나머지는 지웁니다.

정수 n, left, right가 매개변수로 주어집니다. 주어진 과정대로 만들어진 1차원 배열을 return 하도록 solution 함수를 완성해주세요.


나의 풀이

def solution(n, left, right):
    arr = [[0]*n for _ in range(n)]
    
    for i in range(n):
        for k in range(i+1):
            for c in range(i+1):
                if arr[k][c] == 0:  #자리가 비어있을 때만 계산해줌
                    arr[k][c] = i + 1
    
    arr = [num for i in arr for num in i]
    return arr[left:right+1]
  • 맞은 줄 알았는데 시간초과가 뜸...!
  • 이것은 도저히 내가 해결하지 못한다 싶어서 지피티 도움 요청이욧

 

def solution(n, left, right):
    return [max(i // n, i % n) + 1 for i in range(left, right + 1)]
  • 이해 안됨. 앞으로도 이해 안될 거 같음. 그냥 가지고만 갈게요.