관리 메뉴

나예

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

카테고리 없음

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

나예_ 2023. 6. 21. 22:53

1. 문제

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

 

프로그래머스

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

programmers.co.kr

 

 

2. 풀이 및 코드

이 문제는 배열일때의 좌우& 상하 인덱스를 이용해 배열 값을 구함

좌우 & 상하 인덱스 값 중 큰값+1이 배열 값임 

[0,0] => 1 [0,1] => 2 [0,2] =>3
[1,0] =>2 [1,1] =>2 [1,2] =>3
[2,0] => 3 [2,1] =>3 [2,2] =>3

 

시간 초과버전(틀림ㅇ_<)

def solution(n, left, right):
    answer=[]
    arr = [[0]*n for i in range(n)]
    flag=0
    for i in range(n):
        for j in range(n):
            arr[i][j] = max(i,j)+1
            if i*n +j == left:
                flag =1
            if flag ==1:
                answer.append(arr[i][j])
            if i*n + j ==right:
                flag = 0    
    
    
    return answer

n 최대가 10**7인걸 왜 안봤지..

이중 for문으로 모든걸 돌리면 시간초과가 나는걸 보니 arr 모든 원소를 구하고 left ~right를 구하는것 보단 left~right만 구해야할 드읏

 

맞은 버전

def solution(n, left, right):
    answer=[]
    for k in range(left,right+1):
        i = k//n
        j = k%n
        #print(i,j, max(i,j)+1)
        answer.append(max(i,j)+1)
            
    
    
    return answer

 

728x90