본문 바로가기

TIL(Today I Learned)

99클럽 코테 스터디 11일차 TIL + LeetCode 187 (Repeated DNA Sequences, java)

반응형

오늘의 학습 키워드

  • 문자열
  • HashMap

문제 탐색하기

문제

문제 풀이 설계하기

주어진 s 문자열을 길이가 10인 문자열로 잘라서 새로운 문자열을 만들었을 때, 그 문자열이 2번 이상 나올 경우 문자열들을 출력하면 되는 문제입니다.

 

따라서 주어진 s를 for문을 돌면서 길이가 10가 되도록 substring을 사용해서 잘라줬고 그 문자열을 hashmap에 저장해주었습니다. 문자열을 키로 그리고 mapOrDefault 메소드를 사용해서 key 값이 처음일 경우는 value가 1, key값이 존재할 경우는 value 에 + 1 해주면서 세팅해주었습니다.

 

코드

class Solution {
    public List<String> findRepeatedDnaSequences(String s) {

        HashMap<String, Integer> map = new HashMap<>();
        for(int i=0; i<=s.length()-10; i++){
            String str = s.substring(i, i+10);
            map.put(str, map.getOrDefault(str, 0) + 1);
        }

        ArrayList<String> arr = new ArrayList<>();
        for(String str : map.keySet()){
            if(map.get(str) > 1){
                arr.add(str);
            }
        }
        
        return arr;
    }
}

 

오늘의 회고

Hashmap을 통해서 쉽게 풀 수 있는 문제였습니다.
반응형