728x90
⬛ 프로그래머스 | LV.2 크기가 작은 부분 문자열
문제 풀이
- for의 끝나는 조건을 문자열 t의 길이에서 p의 길이를 빼고 이를 i와 비교를 한다.
- 이때 String.length()는 문자열의 길이를 가져오기 때문에 주의해야한다. ("abcde"일 경우 String.length()는 5이다.)
- 이외에 주의해야 할것으로는 데이터 타입을 Long으로 잡아야 한다는 점이다. int로 할 경우 데이터의 범위가 (signed 기준) 2,147,483,647까지 나타낼수있고 이는 문제에서 요구하는 p의 길이의 최대값을 담지 못한다. 그렇기에 Long을 사용하거나 LongLong을 사용 해야한다.
코드 (1차 시도) - 런타임 오류
import java.util.*;
class Solution {
public int solution(String t, String p) {
int answer = 0;
//길이 초과안되게 밀면서 갈 예정
for(int i=0; i<=t.length()-p.length(); i++){
String tmp = "";
for(int j =i; j<i+p.length(); j++){
tmp += t.charAt(j);
}
if(Integer.parseInt(tmp) <= Integer.parseInt(p)){
answer++;
}
}
return answer;
}
}
성공한 코드
class Solution {
public int solution(String t, String p) {
int answer = 0;
Long numberOfP = Long.valueOf(p);
for(int i=0; i<= t.length()-p.length(); i++){
String temp = t.substring(i, i+p.length());
Long numberOfTemp = Long.valueOf(temp);
if(numberOfTemp <= numberOfP)
answer++;
}
return answer;
}
}
728x90
'코딩 테스트 [준비] > [문풀] 프로그래머스_문풀_조지기' 카테고리의 다른 글
프로그래머스 | LV.3 네트워크 문제 (DFS, BFS) (Java) (0) | 2023.06.29 |
---|---|
프로그래머스 | LV.2 타겟 넘버 문제 - DFS 문풀 (Java) (0) | 2023.06.29 |
프로그래머스 | Lv.2 다음 큰 숫자 (Java) (0) | 2023.05.22 |
프로그래머스 | Lv2. 최솟값 만들기 (Java) (0) | 2023.05.20 |
프로그래머스 | Lv2. 숫자의 표현 (Java) (0) | 2023.05.20 |