공부/알고리즘
[hackerrank] Ice Cream Parlor python
richpark
2021. 9. 11. 00:06
처음에 그냥 딱히 생각이 안나서 O(N^2)풀이로 풀었는데 100% 정답이 뜨긴 했지만, 실제 코딩테스트에서는 O(N)시간 복잡도를 요구하는 것 같은 문제라 시간을 줄여 보았다.
dictionary를 이용해서 문제를 풀어보았다 (키포인트)
1. 가격을 key값으로, 문제의 indices를 value로 dictionary를 생성하고, for문을 돌려보자.
2. arr의 0번째 인덱스부터 시작해서 for문이 돌면서 dictionary에 m-arr[i] 즉, cost = [1, 4, 5, 3, 2]이 있을때 1 4 5 를 거치면서 3을 만났을때 생성된 1의 key값을 가진 값이 dictionary에 있기때문에 return [priceDic[m-arr[i]], i+1]을 해주면 오름차순으로 정답을 찾을 수 있다.
def icecreamParlor(m, arr):
# Write your code here
priceDic = dict()
for i in range(len(arr)):
if m-arr[i] in priceDic:
return [priceDic[m-arr[i]], i+1]
else:
priceDic[arr[i]] = i+1
아래는 그냥 바로 풀어본 O(N^2)시간복잡도의 코드.
def icecreamParlor(m, arr):
# Write your code here
for i in range(len(arr)-1):
for j in range(i+1, len(arr)):
if arr[i] + arr[j] == m:
return [i+1,j+1]
728x90