본문 바로가기
프로그래머스/2단계

(Python/LV2)n^2 배열 자르기

by windy7271 2022. 9. 26.
728x90
반응형

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/87390

 

프로그래머스

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

programmers.co.kr

틀린 풀이:

def solution(n, left, right):
    list = [i for i in range(1,n+1)]
    res = []
    for i in range(n):
        if i == 0:
            res.append(list)
        elif i > 0:
            res.append([i+1]*(i+1)+list[i+1:])
    res = sum(res, [])
    return(res[left:right+1])

몇 개는 맞고 시간초과가 나온다.

 

다른 풀이:

# (0,0)   1 이고
# (0,1),(1,0)(1,1) 2 이고
# (0,2),(1,2),(2,0),(2,1),(2,2) 3이다

잘 보면 x,y 값중 0,0 이면 1 ,  1이 들어가면 2 , 2가 들어가면 3이 나온다.

규칙은 알겠는데 코드로는 생각이 안나서 

 https://velog.io/@hannahf97/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-n2-%EB%B0%B0%EC%97%B4-%EC%9E%90%EB%A5%B4%EA%B8%B0

참고함 

def solution(n, left, right):
    answer = []
    for i in range(left,right+1):
        x = i // n # 몫
        y = i%n #나머지

        answer.append(max(x,y)+1)

    return answer

 

반응형

댓글