나중에 꾸준히 쓰게 될지 잘 모르겠지만, 어쨋든 여기서는 내가 코딩 테스트를 어떻게 준비를 했고 어떤 문제들을 풀었고 어떤 것들을 배웠고에 대해서 아마도 쓰게 될거 같다.
그리고 우선 간단히 소개하자면, 나는 한국 대학이 아닌 네덜란드에 있는 델프트 공과대학교를 다니고 있으므로 국내 취업이 아닌 해외, 특히 네덜란드에서 신입 개발자로 취업을 하는 과정을 글로 쓸거 같다.
따라서, 해외에서 취업을 준비하다 보니 백준이나 프로그래머스 보다는 해외에서 더 사용되는 Leetcode나 Hackerrank 문제들을 풀거 같다. 그리고 아직 졸업을 한 상태가 아니므로, 학업과 병행하다 보니 문제들을 그렇게 많이 풀지는 못 한다 (학교 과제, 조교 일, 학교 시험 공부, 인터뷰 준비 등등). 그래서 여기에는 어떤 문제들을 풀었고 내가 대충 뭘 배웠는지에 관해서 아마 쓰게 될거 같다.
그리고 이런 코딩 테스트 문제를 안 푼지 오래되었기 때문에 Leetcode Top Interview 150에 있는 문제들 중에서 난이도가 Easy에서 시작해서 올라갈거 같다.
2024.3.25
2024.3.26
3. Remove Duplicates from Sorted Array
4. Remove Duplicates from Sorted Array II
5. Merge Sorted Array
2024.3.27
6. Remove Element
7. Ransom Note
8. Majority Element
9. Length of Last Word
2024.3.28
10. Roman to Integer
11. Find the Index of the First Occurrence in a String
12. Happy Number
13. Contains Duplicate II
14. Plus One
2024.3.30
15. Is Subsequence
16. Word Pattern
17. Sqrt(x)
18. Two Sum
19. Isomorphic Strings
20. Valid Anagram
알면 좋은거:
1. map.getOrDefault(key, default)
map.getOrDefault(key, default)
// 만약에 map에 이미 key로 저장되어 있으면 map.get(key)한 값 리턴.
// 아니면, default값 리턴
2. char to int 변환
int n = Character.getNumericValue(char c);
3. Integer List to array[int] 변환
list.stream().maptoInt(i -> i).toArray();
4. Two Sum
Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
이걸 O(N) 시간복잡도로 구현해야 한다.
public int[] twoSum(int[] nums, int target) {
int[] ans = new int[2];
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
ans[0] = i;
ans[1] = map.get(complement);
return ans;
}
map.put(nums[i], i);
}
return ans;
}
댓글