Today
Total
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
관리 메뉴

기억은 짧고 기록은 길다

[프로그래머스/Programmers] n^2 배열 자르기 - Python 본문

CodingTest/programmers

[프로그래머스/Programmers] n^2 배열 자르기 - Python

ukunV 2021. 11. 5. 16:22

Link

 

코딩테스트 연습 - n^2 배열 자르기

정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부

programmers.co.kr

 

Solution

처음에 풀때는 간단한 문제라 생각하고 풀었지만 역시나 시간초과에 걸리고 말았다.

def solution(n, left, right):
    answer = []

    for i in range(n):
        for j in range(n):
            answer.append(max(i + 1, j + 1))

    return answer[left:right + 1]

 

Other Solution

이에 left와 right의 값으로 해당 위치의 값을 찾을 방법을 고민해보기 시작했고 그 결과 위치값에서 n을 나눠준 나머지와 몫 중 큰 값이 1을 더해준 값이 해당 위치의 값이라는 사실을 알게 되었다.

def solution(n, left, right):
    answer = []

    for i in range(left, right + 1):
        answer.append(max(i // n, i % n) + 1)

    return answer
🔑 key point: 해당 위치 값 = max(해당 위치 // n, 해당 위치 % n) + 1
📌 Tip: max(i // n, i % n)
Comments