배열을 정렬하였으므로, citation[i]의 오른쪽은 모두 citation[i]보다 같거나 큽니다.
즉, 값이 citation[i] 이상인 배열의 개 수의 합은 length-i 입니다.
따라서, h번 이상 인용된 논문의 개 수가 h개 이상이여야 한다는 조건은 다음과 같이 구현됩니다. 이때, h번에 해당 하는 값은 length -i 이므로 해당 값을 return 합니다 .
다른 방식으로 문제를 풀 때 어려웠던 점은 [0,1,5,6,7,9] 라는 배열이 주어졌을 때, 배열 내에서만 조건을 충족하는 값을 찾아 많이 헤맸었습니다. 이 경우, 4가 나와야한다는 것을 인지하시고 풀면 도움이 많이 될 것 같습니다.
풀이코드:
def solution(citations):
citations.sort()
length = len(citations)
for i inrange(length):
if citations[i] >= length-i and citations[i] >= i:
returnlength-i
return0
마지막으로, 가고자하는 위치의 값이 1(초기 값)이거나 현재 가는 경로가 더 가깝다면 갱신 될 수 있도록 하였습니다.
풀이코드:
from collections import deque
def solution(maps):
q = [(0,0)]direction = [(0,1),(0,-1),(1,0),(-1,0)]while q:
x,y = q.pop(0)
for i,j in direction:
nx = x + i
ny = y + j
if nx < 0 or nx >= len(maps) or ny < 0 or ny >= len(maps[0]) :
continueif maps[nx][ny] == 1 or maps[x][y]+1 < maps[nx][ny]:
maps[nx][ny] = maps[x][y]+1q.append((nx,ny))
return -1 if maps[len(maps)-1][len(maps[0])-1] == 1 else maps[len(maps)-1][len(maps[0])-1]