[99클럽 코테 스터디 2일차 TIL] 프로그래머스 크기가 작은 부분 문자열

말하는 감자·2024년 10월 29일
0
post-thumbnail

99클럽 코테 스터디 2일차 TIL

💙 JAVA 비기너

📌 오늘의 학습 키워드

  • 문자열

📌 공부한 내용

📍 오늘의 문제

📍 작성 코드 1

class Solution {
    public int solution(String t, String p) {
        int answer = 0;
        
        char[] arr = t.toCharArray();
        long pnum = Long.parseLong(p);
        
        for (int i=0; i <= arr.length - p.length(); i++) {
            String str = "";
            for (int j=0; j < p.length(); j++) {
                str += arr[i+j];
            }
            long number = Long.parseLong(str);
            if(number <= pnum) answer++;
        }

        return answer;
    }
}

📍 작성 코드 2

class Solution {
    public int solution(String t, String p) {
        int answer = 0;
        
        long pnum = Long.parseLong(p);
        
        for (int i=0; i <= t.length() - p.length(); i++) {
            if (pnum >= Long.parseLong(t.substring(i, i+p.length()))) answer++;
        }

        return answer;
    }
}

📌 오늘의 회고

이중 for문을 사용한 노가다 코드를 작성하고 있었는데 채점 전에 String.substring() 함수가 생각이 났다. 그래도 그동안 한 게 아까워서 두 방식으로 구현했다.

작성 코드 1은 숫자로 이루어진 문자열 tchar[]로 만들어서 문자를 하나씩 한땀한땀 문자열str에 붙혀준 후 Long.parseLong()로 데이터타입을 long으로 변경해줘서 비교했다.

작성 코드 2는 t를 문자 배열로 변경하지 않고 String.substring() 함수를 이용하여 바로 잘라 쓰는 방식이다. String.substring(a, b)이면 a번째 문자부터 b번째 문자까지 잘라낸다.


함수 하나의 차이로 코드가 확 간결해졌다. 좀 더 빨리 깨달았으면 좋았겠다 싶었지만 오히려 늦게 기억하는 덕분에 코드 정리가 어떻게 되는지 더 돋보이지 않았나 싶다.

profile
나는 말하는 감자다

0개의 댓글