일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- ddd
- 도메인 주도 설계
- React
- 아키텍처
- serverless
- amqp
- zookeeper
- 2020년
- finops
- 알고리즘
- CloudWatch
- AWSKRUG
- github pages
- 머신러닝
- 맥주
- HEXO
- 백준
- 하이트진로
- 메세지큐
- AWS
- 노션
- billing
- Kafka
- 회고
- Notion
- S3
- LAMBDA
- Leetcode
- API Gateway
- Zappa
- Today
- Total
인생은 고통의 연속
two sum 본문
반응형
leetcode.com/problems/two-sum/
언제든 이직할 수 있도록 코딩테스트 연습하려고 leetcode에 가입했다
그냥 제일 상위에 있는 문제 중 easy 난이도 하나를 골라서 풀었는데
한번에 통과는 했지만 많은 반성을 하게 됐다...
내 답은 이렇게 적었는데
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
results = []
for i, first in enumerate(nums):
for j, second in enumerate(nums):
if i == j:
continue
if target == first + second:
return [i, j]
답지를 보고 나니 너무 부끄러운 코드다...
진짜 생각없이 brute force로 풀었는데
One/Two-pass Hash Table 답을 보면 참 현타 오는 코드다 ㅋㅋ
// Two-pass Hash Table
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
map.put(nums[i], i);
}
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement) && map.get(complement) != i) {
return new int[] { i, map.get(complement) };
}
}
throw new IllegalArgumentException("No two sum solution");
}
// One-pass Hash Table
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
return new int[] { map.get(complement), i };
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
혼자서 + 대충 일하던 습관이 그냥 몸에 베어버린 2중 for문...
O(n)으로 풀 수 있는 답은 보니 내 O(n^2)은 완전 쓰레기가 되어렸다
이건 알고리즘 문제니깐 좀 더 최적화 포인트를 생각해볼 수 있었는데
많은 반성 포인트만을 남겨둔채 일단 통과... ㅋㅋㅋ
매일까진 아니라도 최소한 일주일에 한문제는 풀어봐야겠다
진짜 감 많이 잃었네...
반응형
'프로그래밍 > 알고리즘' 카테고리의 다른 글
Merge Two Sorted Lists (0) | 2022.01.11 |
---|---|
Rearrange Spaces Between Words (0) | 2021.04.26 |
11일차 리뷰 (0) | 2019.02.13 |
10일차 리뷰 (0) | 2019.02.12 |
9일차 리뷰 (0) | 2019.02.08 |
Comments