# 크기가 작은 부분문자열
# 풀이 과정
이 문제의 핵심은 p의 길이가 최대 18임을 보고 Long 타입을 써야 한다는 것이다
처음에는 p와 t의 길이를 사용해서 반복하려면 어떻게 for문을 돌려야하는지가 헷갈렸다
t의 길이에서 p의 길이를 뺀 후 + 1 을 해주면 되었다
그런데 아무 생각없이 int형으로 선언해서 문제를 해결하려고 하니까 풀리지 않았다
문제를 다시 잘 보니 p의 최대 길이가 18이기 때문에 Long 타입을 써야했다
그거 말고는 substring 메소드와 Long.parseLong을 사용해서 String과 Long 사이의 타입 변환만 잘 해주면 되는 문제이다
# 정답 코드
class Solution {
public int solution(String t, String p) {
//p의 최대 길이 18 -> int 범위 초과 long 타입 필요
int len = p.length();
Long pLong = Long.parseLong(p);
int cnt = 0;
for(int i=0; i<t.length() - len + 1; i++) {
String str = t.substring(i, i+len);
if(Long.parseLong(str) <= pLong) {
cnt++;
}
}
return cnt;
}
}
'알고리즘 > Programmers' 카테고리의 다른 글
[Programmers] 디펜스게임.java (0) | 2024.02.01 |
---|---|
[프로그래머스] Java Level 1. 콜라츠 추측 (0) | 2023.05.25 |
[프로그래머스] Java Level 1. 서울에서 김서방 찾기 (0) | 2023.05.25 |
[프로그래머스] Java Level 1. 두 정수 사이의 합 (0) | 2023.05.25 |
[프로그래머스] Java Level 1. 하샤드 수 (0) | 2023.05.25 |