본문 바로가기
Algorithm/etc

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

by 베짱이28호 2023. 7. 10.

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

 
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


풀이

방향성 생각

그려서 규칙찾기

1 2 3 4 5
2 2 3 4 5
3 3 3 4 5
4 4 4 4 5
5 5 5 5 5

n = 3~5일 때 어떤식으로 진행되는지 볼 수 있다.
1행에서는 1이 1개, 나머지 등차수열
2행에서는 2가 2개, 나머지 등차수열
3행에서는 3이 3개, 나머지 등차수열
 
테스트 케이스 2번 같은 경우에는 7부터 14이다.
7은 2행, 14는 4행이다. 행은 left, right의 몫+1이다.

 

def solution(n,left,right):
    answer = [] # 규칙 1234 2234 3334 4444
    p1,q1 = divmod(left,n)
    p2,q2 = divmod(right,n)

    for i in range(p1,p2+1):
        if i != n-1 : answer.extend([i+1]*i + list(range(i+1,n+1)))
        else : answer.extend([i+1]*n)

    if q2 == n-1 : return answer[q1:]
    else: return answer[q1:-n+q2+1]

몫을 구해주고 그 행에 해당하는 리스트 만들어서 answer로 업데이트
나머지가 있는 경우에는 앞뒤로 잘라준다.

댓글