TIL 2022-06-03-금

그린·2022년 6월 4일
0

TIL

목록 보기
34/47

1. 오늘 학습한 내용

백준 집합 11478번 문제

2. 알게 된 내용

백준에 질문 올린 것

처음에 생각한 것은 원리 그대로 생각해서, n글자씩 문자열을 잘라와서 집합 set에 넣으면서 진행하려고 하였다.

        HashSet<String> set = new HashSet<>();
        for (int i = 0; i < s.length(); i++) {
            int start_index = 0;
            int end_index = i + 1;
            while (end_index <= 5) {
                set.add(s.substring(start_index, end_index));
                start_index++;
                end_index++;
            }
        }

하지만... 이 질문을 올릴 당시까지만 해도 내가 맞게 한 것 같은데 어디서 틀린 건지 몰랐었는데..
답변주신 분의 답변을 통해.. 내가 end_index <= 5까지 while문을 돌린 게 문제였음을 알게 되었다...
너무 단편적으로 문자열 길이가 5인 것만 생각했다...!!
앞으로는 더 다양한 케이스를 생각해보아야겠다는 생각이 들었다.. 너무 어이없고 부끄러워서 삭제해버리고 싶지만... 더 반성하고 발전하자는 의미로 그대로 둬야겠다..

그래서 고친 코드는

        HashSet<String> set = new HashSet<>();
        for (int i = 0; i < s.length(); i++) {
            int start_index = 0;
            int end_index = i + 1;
            while (end_index <= s.length()) {
                set.add(s.substring(start_index, end_index));
                start_index++;
                end_index++;
            }
        }

위와 같이 s.length()까지 반복하도록 수정했더니 맞았다.
다른 분들의 코드보다 메모리랑 시간 모두 적게 소요되었다.
아무튼... 오늘을 계기로 앞으로 코딩 문제를 풀 때 더 다양한 케이스에 대해 생각해낼 수 있도록 더 노력해야겠다!

profile
기록하자

0개의 댓글

Powered by GraphCDN, the GraphQL CDN