반응형
# 왼쪽, 오른쪽 사이에 해당하는 값으로 몫과 나머지를 구한 다음 큰 값에 +1 시켜줘서 추가해주기
def solution(n, left, right):
result = []
for i in range(left, right+1):
x, y = i//n, i%n
if x >= y: result.append(x+1)
else: result.append(y+1)
return result
# 시간초과
# 해당 풀이는 처음 접근한 방식으로 2차원 배열처럼 생각을 한 상태로
# 2중 for문을 돌려 해결해보려 했음.
# 추후 시간 초과로 인해 첫번째 for문에서 left 값보다 cnt 값이 더 작으면
# n만큼 cnt에 추가해주는 형식으로 시간을 줄이려 했지만 엄청 빡빡한 타임으로 안됨...
def solution(n, left, right):
cnt, li, flag = 0, [], False
for i in range(n):
if left > cnt + n:
cnt += n
continue
for j in range(n):
if left <= cnt <= right:
x = 0 # 해당 칸의 값
if i >= j: x = i
else: x = j
li = li + [x+1]
elif cnt > right:
flag = True
break
cnt += 1
if flag == True: break
return li
# 시간초과
# 최종 풀이 전
# n**2 에 해당하는 배열을 만든 다음 그 안의 값으로 처리를 하려고 했지만
# 물론 지금 생각해보면 바보 같은 생각이긴 하다.
# 이유는 어차피 for문으로 나오는 i 값으로 하면 되는건데 굳이?? ㅋ
def solution(n, left, right):
li, result = [i for i in range(n**2)], []
for i in range(left, right+1):
x, y = li[i]//n, li[i]%n
if x >= y: result.append(x+1)
else: result.append(y+1)
return li
'알고리즘' 카테고리의 다른 글
[프로그래머스] [1차] 캐시 (0) | 2023.06.23 |
---|---|
[프로그래머스] 행렬의 곱셈 (0) | 2023.06.22 |
[프로그래머스] 연속 부분 수열 합의 개수 (0) | 2023.06.20 |
[프로그래머스] H-Index (0) | 2023.06.19 |
[프로그래머스] 괄호 회전하기 (0) | 2023.06.15 |