[rara-record] WEEK 01 solutions#1699
Conversation
| if num in num_set: | ||
| return True | ||
| else: | ||
| num_set.add(num) |
There was a problem hiding this comment.
저는 단순히 set으로 nums를 넣고 길이비교를 생각했었는데 rara님 처럼 풀면 배열 수가 많아질경우 중복된 수가 앞쪽에 있다면 더 빨리 문제가 해결될 것 같습니다!
저희가 코드를 짤때도 실패되는 케이스나 성공하는 케이스에 대해 빠르게 return하는 것을 지향하는 것으로 알고있는데 (무슨 방법론이었나 ..? 이름이 생각이 안나네요..) 좋은 접근인 것 같습니다 ㅎㅎ
There was a problem hiding this comment.
안녕하세요, 여기서 보고 왔어요: #1757 (comment)
흔히 가지치기(Pruning)라고 하고 머신러닝에서는 Early Stopping이라고도 하는 것 같고 저는 Short Circuit이라고도 표현해 봅니다. 만일 DP 때문이라면 Memoization이라고 하거나 시스템 디자인에서는 Caching이라고도 할 것 같아요. 혹시 용어 정리 더 가능하신 분 계시면 알려 주세요 ㅎㅎ
| while num + current_length in num_set: | ||
| current_length += 1 |
There was a problem hiding this comment.
이 문제를 풀 때 저는 처음에는 이 while문을 보고 n^2가 아닌가 생각했지만 오직 1번만 실행되기에 2N -> N 인 것을 알았습니다. 수고하셨어요!
| count_dic[num] = 1 | ||
|
|
||
| # 빈도수가 큰 순서대로 k개를 반환 | ||
| return nlargest(k, count_dic, key=count_dic.get) |
| } | ||
|
|
||
| 1. nums를 한 번 순회하며 각 숫자와 인덱스를 딕셔너리에 저장 | ||
| 2. 다시 nums를 순회하며, target - 현재 숫자가 딕셔너리에 있고 인덱스가 다르면 정답 쌍을 반환 |
There was a problem hiding this comment.
요 부분을 생각해내는게 포인트였던 것 같습니다. target이 되는 2개의 인덱스를 반환해야하므로, 딕셔너리를 사용해서 index정보를 넣고 key로 그 index를 뽑아내는 접근이 좋았습니다.
|
#219 도 푸셨으니 체크하셔도 되겠군요 |
답안 제출 문제
작성자 체크 리스트
In Review로 설정해주세요.검토자 체크 리스트
Important
본인 답안 제출 뿐만 아니라 다른 분 PR 하나 이상을 반드시 검토를 해주셔야 합니다!