Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Roads and Libraries
- Common Child
- hackerrank
- 백준
- BFS: Shortest Reach in a Graph
- Algorithm
- DFS: Connected Cell in a Grid
- 구슬탈출2
- 격파르타 장점
- 머신러닝
- python
- 격파르타 후기
- Recursion: Davis' Staircase
- Interview Preparation Kit
- programmers
- 매칭점수
- Max Array Sum
- Special String Again
- candies
- 파이썬
- [sqld]자격증합격
- 해커랭크
- 격파르타 합격후기
- 알고리즘
- 피보나치 함수
- 프로그래머스
- Reverse Shuffle Merge
- 야근지수
- Find the nearest clone
- 코딩테스트
Archives
- Today
- Total
Archive
[Hackerrank] Hash Tables: Ice Cream Parlor 본문
https://www.hackerrank.com/challenges/ctci-ice-cream-parlor/problem
풀이
-
input : 가지고 있는 money, 아이스크림 가격 정보에 대한 list
-
두 개의 아이스크림 가격의 합이 가지고 있는 money와 일치할 때 아이스크림의 index를 오름차순으로 출력
-
아이스크림 가격 리스트를 한 번 순회하면서 파이썬의 dictionary를 사용해 , key는 i번째 아이스크림의 가격, value는 index i를 저장.
-
j번째 아이스크림의 가격 정보가 입력되었을 때 (money - j번째 아이스크림의 가격)이 dictionary key로 존재할 경우, dictionary[(money - j번째 아이스크림의 가격)] + 1, j+1을 출력하고 종료.
-
dictionary에는 j번째 index보다 더 앞서 나온 아이스크림 가격과 index가 저장되어있으므로, dictionary에서 찾은 index, 현재 index 순으로 출력하면 오름차순이 됨.
-
파이썬의 dictionary에서 key를 찾는 알고리즘은 시간복잡도 O(1)이기 때문에 총 계산 O(N)으로 구현할 수 있음.
def whatFlavors(cost, money): cost_dict = {} for idx, c in enumerate(cost): if money-c in cost_dict: print(f"{cost_dict[money-c] + 1} {idx+1}") else: cost_dict[c] = idx
'공부 > Algorithm' 카테고리의 다른 글
[Hackerrank] pairs (0) | 2020.08.10 |
---|---|
[Hackerrank] Triple sum (0) | 2020.08.10 |
[programmers] Level4. 징검다리 (0) | 2020.08.06 |
[programmers] Level4. 가사검색 (0) | 2020.08.06 |
[programmers] Level4. 지형이동 (0) | 2020.08.05 |
Comments