[프로그래머스] 크기가 작은 부분 문자열

The Flawless Bead·2023년 2월 10일
0

프로그래머스

목록 보기
7/20
post-thumbnail

🔗문제로 이동 👉 [크기가 작은 부분 문자열]



문제를 통해 새롭게 배운 부분 OR 느낀점

💡 알 수 없는 런타임 에러가 발생하면 자료형을 확인하자!
분명 테스트 케이스는 모두 통과했는데 막상 코드를 제출하니 런타임 에러가 발생했다. 이상하다 싶어서 문제를 다시 읽어보니 놓친 부분이 있었다.
• 1 ≤ p의 길이 ≤ 18
• p의 길이 ≤ t의 길이 ≤ 10,000
위의 조건을 제대로 안보고 단순히 pt 로 이해하고 넘어가서 tnpnint 타입으로 지정해서 벌어진 문제였다😱
앞으로는 마음이 급하다고 대충 보고 지나가는 것이 아니라, 출제자가 왜 저런 조건을 걸었는지 생각하는 습관을 길러야겠다.



✅ 문제풀이

  1. tp가 나타내는 수 tn, pn을 선언한다.
    • t의 길이가 최대 10,000 이기 때문에 long 타입으로 선언한다.
  2. for문을 사용해 p의 제일 앞자리 숫자와 t의 해당 인덱스에 해당하는 숫자를 비교한다.
    • i <= t.length() - p.length()p보다 작은 자리수는 비교할 필요가 없기 때문에 생략한다.
  3. t의 해당 인덱스에 해당하는 숫자가 같거나 작다면 tn을 현재 인덱스부터 p의 길이만큼 자른다.
  4. tnpn보다 작거나 같다면 answer++ 해준다.
class Solution {
    
    public int solution(String t, String p) {
        int answer = 0;
        long tn = 0;
        long pn = Long.parseLong(p);
        
        for(int i = 0; i <= t.length() - p.length(); i++) {
            if(t.charAt(i) <= p.charAt(0)) {
                tn = Long.parseLong(t.substring(i, i + p.length()));
                if(tn <= pn) answer++;
            }
        }
            
        return answer;
    }
}

profile
오늘을 살고 내일을 꿈꾸는 낭만주의자

0개의 댓글