[99클럽 코테스터디 TIL 15일차] LeetCode 187. Repeated DNA Sequences 해설 및 풀이 (Java)

2025. 4. 14. 20:31·Study/코딩 테스트
반응형

 

LeetCode 187. Repeated DNA Sequences

https://leetcode.com/problems/repeated-dna-sequences/


The DNA sequence is composed of a series of nucleotides abbreviated as 'A', 'C', 'G', and 'T'.

For example, "ACGAATTCCG" is a DNA sequence.
When studying DNA, it is useful to identify repeated sequences within the DNA.

Given a string s that represents a DNA sequence, return all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule. You may return the answer in any order.

 

Example 1:

Input: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
Output: ["AAAAACCCCC","CCCCCAAAAA"]
Example 2:

Input: s = "AAAAAAAAAAAAA"
Output: ["AAAAAAAAAA"]
 

Constraints:

1 <= s.length <= 105
s[i] is either 'A', 'C', 'G', or 'T'.

 

한글 해석

더보기

DNA 서열은'A' , 'C', 'G', 로 약칭되는 일련의 뉴클레오티드로 구성됩니다 'T'.

예를 들어, DNA 서열"ACGAATTCCG" 은 .
DNA를 연구할 때 , DNA 내에서 반복되는 서열을 식별하는 것이 유용합니다.

DNA 서열을s 나타내는 문자열이 주어지면 , DNA 분자에서 두 번 이상 나타나는 모든 -글자 길이의 서열(부분 문자열)을 반환합니다. 답은 어떤 순서 로든 반환할 수 있습니다 .10

 

예시 1:

입력: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
 출력: ["AAAAACCCCC","CCCCCAAAAA"]
예 2:

입력: s = "AAAAAAAAAAAA"
 출력: ["AAAAAAAAAA"]
 

제약 조건:

1 <= s.length <= 105
s[i]'A', 'C', 'G', 또는 입니다 'T'.

 


 

 

문제 유형

 

Hash Table
String
Bit Manipulation
Sliding Window
Rolling Hash
Hash Function

 

풀이 방법 도출

 

  1. 문자열을 인덱스 0부터 끝까지 반복하면서 10글자짜리 부분 문자열을 잘라냅니다.
  2. 처음 본 문자열은 set에 저장하고 이미 본 문자열이면 result에 저장합니다.
  3. 중복된 부분 문자열만 결과에 저장합니다.

 

시간 복잡도

  • O(n)

핵심 코드 삽입 및 설명

 

import java.util.*;

class Solution {
    public List<String> findRepeatedDnaSequences(String s) {
        // 이미 나온 10글자 부분 문자열 저장
        Set<String> set = new HashSet<>();
        // 중복으로 두 번 이상 나온 10글자 문자열 저장
        Set<String> result = new HashSet<>();
        
        // 전체 문자열을 순회하면서 길이를 10짜리 부분 문자열 추출
        for (int i = 0; i <= s.length() - 10; i++) {
            // 길이 10의 부분 문자열 추출
            String substring = s.substring(i, i + 10);
            
            // set에 추가 실패했다는 것은 이미 한 번 등장함
            // 따라서 result에 추가
            if (!set.add(substring)) {
                result.add(substring);
            }
        }

        // Set을 List로 변환하여 결과 반환
        return new ArrayList<>(result);
    }
}
반응형
저작자표시 비영리 변경금지 (새창열림)

'Study > 코딩 테스트' 카테고리의 다른 글

[99클럽 코테스터디 TIL 16일차] 백준 25757번 임스와 함께하는 미니게임 해설 및 풀이 (Java)  (0) 2025.04.15
[LeetCode] 283. Move Zeroes 해설 및 풀이 (Python)  (0) 2025.04.14
[프로그래머스] 최소 직사각형 해설 및 풀이 (Python)  (0) 2025.04.12
[프로그래머스] Lv.1 K번째 수 해설 및 풀이 (Python)  (0) 2025.04.11
[백준] 11727번 2×n 타일링 2 해설 및 풀이 (Python, Java)  (0) 2025.04.11
'Study/코딩 테스트' 카테고리의 다른 글
  • [99클럽 코테스터디 TIL 16일차] 백준 25757번 임스와 함께하는 미니게임 해설 및 풀이 (Java)
  • [LeetCode] 283. Move Zeroes 해설 및 풀이 (Python)
  • [프로그래머스] 최소 직사각형 해설 및 풀이 (Python)
  • [프로그래머스] Lv.1 K번째 수 해설 및 풀이 (Python)
Dev Chu
Dev Chu
  • Dev Chu
    Log_Double 7
    Dev Chu
  • 전체
    오늘
    어제
    • LOG LIST (199)
      • log Double 7 (2)
        • notice (1)
        • 회고록 (1)
      • Study (111)
        • 과제 (2)
        • 코딩 테스트 (105)
        • 대규모 시스템 설계 기초 (4)
      • CS (10)
        • 자료구조 & 알고리즘 (4)
        • Design Pattern (2)
        • TIL (4)
      • FrontEnd (26)
        • HTML & CSS (16)
        • JavaScript & jQuery (9)
        • React (1)
      • BackEnd (24)
        • Java (4)
        • Python (6)
        • Database (0)
        • Spring (6)
      • Infra & DevOps (3)
        • AWS (3)
        • Git (8)
      • Project (3)
        • repo_bis (2)
        • WhiteMonday (1)
      • ETC (20)
        • TIP (13)
        • Error (5)
        • SQLD (2)
  • 블로그 메뉴

    • 코딩 테스트
  • 링크

    • GitHub
  • 공지사항

    • Log Double 7
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Dev Chu
[99클럽 코테스터디 TIL 15일차] LeetCode 187. Repeated DNA Sequences 해설 및 풀이 (Java)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.