처음부터 끝까지 for문을 돌려서 max값을 넣어주었지만 이 경우 시간초과가 발생하였다.
긴 시간 고민하여 left, right 사이만 돌아주면서 값을 추가해줘야겠다고 생각했다.
예시를 보면 리스트에 들어가는 값들을 알 수 있었고, 그 값들을 분석해 보면 (max((i // n), (i % n)) + 1)로 들어간다는 것을 알 수 있었다. 이를 통해 시간 초과를 해결하여 문제를 풀 수 있었다.
거진 한달 만에 알고리즘을 다시 풀었는데 정말 머리가 굳었다는게 느껴졌다... 문제 이해를 오랫동안 못했는데 이해하고 나서도 솔루션이 안보였다. 알고리즘은 꾸준히 풀지않으면 다 까먹는 것 같다 🤦🏻♀️
def solution(n, left, right):
answer = []
left, right = int(left), int(right)
for i in range(left, right+1):
answer.append(max((i // n), (i % n)) + 1)
return answer