코테
99클럽 코테 스터디 15일차 TIL + Leetcode 187. Repeated DNA Sequences
pipinstall
2025. 4. 14. 22:41
오늘의 학습 키워드
- 자바 문자열 처리
- Sliding Window 알고리즘
- HashSet을 활용한 중복 데이터 처리
[ Leetcode 187. Repeated DNA Sequences ]
문제 요약
DNA 서열 문자열이 주어졌을 때,
길이가 10인 부분 문자열 중 두 번 이상 등장하는 문자열을 찾는 문제
해결 방법
- 문자열을 길이 10 윈도우로 잘라가며 탐색
- 중복 체크를 위해 HashSet 사용
- 처음 등장한 문자열은 seen Set에 저장
- 두 번째 등장한 문자열은 result Set에 저장
알고리즘 동작 방식
- HashSet : 중복 여부 체크
Java 코드 구현
class Solution {
public List<String> findRepeatedDnaSequences(String s) {
int L = 10; // 서브스트링 길이
int n = s.length();
Set<String> seen = new HashSet<>();
Set<String> repeated = new HashSet<>();
for (int i = 0; i <= n - L; i++) {
String sub = s.substring(i, i + L);
if (seen.contains(sub)) {
repeated.add(sub);
} else {
seen.add(sub);
}
}
return new ArrayList<>(repeated);
}
}
오늘의 회고
What?
DNA 서열 문자열에서 길이가 10인 부분 문자열 중 두 번 이상 등장하는 문자열 찾기
How?
Sliding Window 기법으로 고정 길이 서브스트링을 추출하고
HashSet으로 중복 여부를 체크하여 문제 해결