Contains Duplicate
배열에 중복된 값이 있는지 체크하는 문제로, 간단하게 Set을 사용하여 배열의 길이와 비교해주었다.
Valid Anagram
단어의 등장 횟수를 비교하여 같다면 valid인 문제였다. 맵을 두개를 사용하여 풀었으나, 한개를 사용하여 한 문자열의 등장횟수를 더하고, 다른 문자열에선 등장횟수를 빼준다면 충분히 맵을 한개만 사용하여 풀이할 수 있었다.
Two Sum
리트코드 국민 문제. 관건은 O(n^2) 시간보다 어떻게 줄일 수 있느냐였다.
맵을 사용하여 현재 값과 인덱스를 넣어주고, 만약에 (target - 현재값)이 맵에 존재한다면, 인덱스를 리턴해줬다.
Group Anagrams
이 문제를 풀면서 String을 어떻게 정렬하는지 까먹어서 인터넷을 참고했다.
char [] chars = str.toCharArray();
Arrays.sort(chars);
String tmp = new String(chars);
이런식으로 String 값을 char 배열로 변환한 뒤에, 해당 배열을 정렬하고 다시 String으로 변환해주면 된다.
이 문제도 Two Sum 문제와 마찬가지로 해쉬맵에 (정렬된 String, 오리지널)을 넣어서 결과값에 맵의 values들을 추가해주면 되는 문제였다.
Top K Frequent Elements
두가지 방법으로 풀이를 진행했다.
1. 리스트를 정렬하여 k번째 까지 결과에 담는 방법
2. 우선순위 큐를 이용한 풀이
두 방법 모두 정렬을 해주긴 했다.
Product of Array Except Self
처음에 우선순위 큐를 사용하여 넣어주고 0이 있는지 여부, 해당 값이 0인지 아닌지를 판단하여 값을 도출했다.
하지만 테케 3번 부터 막혀서 고민하다가 답을 찾아봤는데, 0의 갯수를 세는 변수도 필요했다. 0의 갯수가 2개 이상일 때 모든 결과값이 0이 되기 때문에 해당 엣지 케이스를 고려해줘야 한다.
'Algorithm > Leetcode' 카테고리의 다른 글
1930. Unique Length-3 Palindromic Subsequences (0) | 2025.01.04 |
---|---|
3286. Find a Safe Walk Through a Grid (0) | 2025.01.04 |
12/10 풀이 (0) | 2024.12.13 |
12/9 풀이 (0) | 2024.12.09 |
12/8 풀이 (0) | 2024.12.09 |