728x90
substring()을 이용하여 부분문자열을 잘라 비교하는 문제입니다.
📌 Q
문자열 t에서 p와 길이가 같은 부분문자열 중에서,
해당 숫자가 p보다 작거나 같은 경우의 개수를 구하는 문제
📌 정답코드
package level1;
public class No34 {
public static void main(String[] args) {
String T = "500220839878";
String P = "7";
int len = P.length();
int cnt = 0;
for(int i = 0; i <= T.length() - len; i++){
String str = T.substring(i, i + len);
if(Long.parseLong(str) <= Long.parseLong(P)){
cnt++;
}
}
System.out.println(cnt);
}
}
📌 핵심 포인트
substring 활용
T.substring(i, i + len)
현재 위치부터 len 길이만큼 문자열을 잘라낸다.
T = "3141592"
P = "271"
314
141
415
159
592
이렇게 한 칸씩 이동하면서 검사한다.
숫자 비교 : 문자열 그대로 비교하지 않고 숫자로 변환해야 한다.
Long.parseLong(str)
📌 한 줄 정리
- substring으로 고정 길이 문자열 추출
- Long 타입으로 숫자 비교
- 슬라이딩 윈도우 느낌으로 해결 가능
📌 최종 핵심 요약
- substring 범위 계산이 핵심
- 숫자 비교는 Long 사용
- 문자열 탐색 기본 유형으로 자주 등장하는 문제
문자열 문제에서 substring 사용법은 정말 자주 나오므로 익숙해지는 것이 중요하다
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 프로그래머스 삼총사 JAVA 풀이 (브루트포스, 조합, 시간복잡도) (0) | 2026.05.20 |
|---|---|
| 프로그래머스 최대공약수와 최소공배수 JAVA 풀이 (유클리드호제법, 시간복잡도) (0) | 2026.05.18 |
| 프로그래머스 같은 숫자는 싫어 JAVA 풀이 (스택, 구현, 시간복잡도) (0) | 2026.05.16 |
| 프로그래머스 행렬의 덧셈 JAVA 풀이 (2차원배열, 구현) (0) | 2026.05.14 |
| 프로그래머스 문자열 다루기 기본 JAVA 풀이 (문자열, 구현) (0) | 2026.05.14 |