본문 바로가기

문제풀기

크기가 작은 부분문자열

728x90

안녕하세요! 오랜만에 프로그래머스 문제를 풀어봤습니다.

난이도 1의 연습문제입니다!

 

문제풀러 GO!

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이


문제 이해

  • t의 부분문자열 중에서 부분문자열이 나타내는 수가 p보다 작거나 같은 것이 나오는 횟수 리턴
  • 부분 문자열과 특정 문자열과의 비교이기 때문에 첫 번째 인덱스부터 t의 길이와 p의 길이의 차이까지 순회하며 문자열을 추출하는 방식으로 문제 풀이가 가능할 것 같다.

해결 방법

  • 첫 번째 인덱스부터 t의 길이와 p 길이의 차이까지 순회하며 substring(idx, idx + p.length) 로 문자열을 추출
  • 해당 문자열을 Long 타입으로 변환
      • 1  p의 길이 ≤ 18 이고, int는 18자리 표현이 불가능하여 18자리까지 표현이 가능한 long 자료형을 사용한다.
  • p보다 작거나 같다면 answer의 값을 1 증가시킨다.
class Solution {
    public int solution(String t, String p) {
        int answer = 0;
        
        long pNum = Long.parseLong(p);
        int pLen = p.length();
        for (int i = 0; i <= t.length() - pLen; i++) {
            String part = t.substring(i, i + pLen);
            long partNum = Long.parseLong(part);
            if (partNum <= pNum) {
                answer++;
            }
        }
        
        return answer;
    }
}

'문제풀기' 카테고리의 다른 글

테이블 해시 함수  (2) 2022.12.29
가장 가까운 같은 글자  (0) 2022.12.29
프로그래머스 기지국 설치  (0) 2022.04.24
프로그래머스 크레인 인형뽑기 게임  (0) 2022.04.22
백준 문제 10699번 토마토  (0) 2022.02.23