[문제 풀이]
- 배열의 좌표가 (i,j)일 때, 해당 배열의 요소 값은 좌표 중 큰 값 입니다.
- 따라서, left와 right가 포함되는 열만 배열로 만들어서 배열의 좌표중 큰 값을 배열의 요소로 만들었습니다.
- 하지만, 시간 복잡도 부분에서 성능이 떨어지는 코드입니다. 또한, left와 right가 포함되는 열만 만들어줘야 하므로 출력하고자 하는 범위를 다시 계산해야한다는 단점이 있습니다.
**하지만, 저 좋은 발상이 있었습니다. 배열의 크기는 3x3이고 5번째 좌표를 알고 싶을 때, 그 좌표는 (5//3+1,5%3+1)인 것입니다.
(+1을 하는 이유는, 좌표를 (0,0) 부터가 아닌 (1,1)부터 계산하기 때문입니다.)
두번째 코드가 위 발상에 해당되는 코드입니다.
[풀이 코드]
def solution(n, left, right):
answer = [(i, j) for i in range(int(left // n) + 1, int(right // n) + 2) for j in range(1, n + 1)]
l = left - (int(left // n) * n)
r = l + (right - left)
return list(map(max, answer[l:r + 1]))
def solution(n, left, right):
return [max(i // n, i % n) + 1 for i in range(left, right + 1)]
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/python] 최소직사각형 (0) | 2023.07.03 |
---|---|
[프로그래머스/python] 연속된 부분 수열의 합 (0) | 2023.05.01 |
[프로그래머스/python] 소수 찾기 (0) | 2023.03.27 |
[프로그래머스/python] 피로도 (0) | 2023.03.24 |
[프로그래머스/python] 두 큐 합 같게 만들기 (0) | 2023.03.22 |