211223 목 Algorithms TIL

bongf·2021년 12월 23일
0

알고리즘TIL

목록 보기
42/153

The HackerRank Interview Preparation Kit

Dictionaries and Hashmaps - Count Triplets

문제
코드

풀기, 배운 것

풀지는 못했고 다른 분들이 작성한 코드를 보면서 이해했고 코드를 안보고 내 나름대로 짜보려고 했다.

  • for문을 1번만 돌면서 풀려면 dictionary를 이용해서 풀어야 한다
  • 2개의 dictionary(자바로는 Map<>)을 사용해야 하는데 이 dictionary가 의미하는 것은 조건이 충족되길 기다리는(그 앞에는 모든 조건이 충족된) 요소들의 수다.
    • 작성한 코드에서 ask_middle은 해당 수가 가운데에 오길 기다리는 수고, aks_end는 해당 수가 마지막에 오길 기다리는 수다
    • 예를 들어 r 이 2일 때 '1', '2' 가 있었다면
    • '1'은 자신에게 r을 곱한 '2'가 가운데에 오길 기다리는 수다. '1'이 하나가 있으니까 ask_middle[2] = 1 가 될 것이다.
    • '1', '2'가 있으니까 ask_end[4] = 1일 것이다.
    • 그리고 '2'를 첫번째 수로 생각한다면 ask_middle[4] = 1이다.
  • 이를 이용해서 코드에 작성된 풀이로 풀었다.
  • 그런데 dictionary의 값을 찾아서 이 값이 None인지 아닌지 계속 확인을 해줘야 했는데 다른 분의 풀이를 보다가 defaultDictionary라는 것을 알게되었다.
  • dictionary 초기화를 해주는데 예를 들어 arr = defaultdict(int) 라고 저장하면 해당 딕셔너리의 초기 값은 int의 초기값인 0으로 저장된다. 그래서 dictionary에 넣지 않은 값을 찾아도 0으로 꺼내진다.
from collections import defaultdict

 arr = defaultdict(int)
 print(arr[1]) // 0
profile
spring, java학습

0개의 댓글