반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 후기
- 백준
- softeer
- 59412
- 티스토리챌린지
- 진료과별 총 예약 횟수 출력하기
- 165672
- 14942
- 핵심
- MySQL
- 싸피
- 퍼즐 조각 채우기
- 142085
- java
- 조건에 부합하는 중고거래 상태 구하기
- 146355
- SSAFY
- 오블완
- 소프티어
- PCCP
- 설명
- 10기
- 59409
- 수료
- 정기 코딩 인증평가
- 배열 돌리기 5
- 해결
- 프로그래머스
- 132202
- SQL
Archives
- Today
- Total
개발 쥬스
[프로그래머스/Java] 147355 크기가 작은 부분 문자열 본문
반응형
🔗 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/147355
🔍 해결 과정
문자열 p의 길이만큼 문자열 t의 부분 문자열을 만든 후, p의 값보다 작거나 같은 값에 해당하는 문자열들의 개수를 반환해야 합니다.
여기서 p의 최대 길이는 18이므로 Java 기준 Integer의 범위(최대 정수값 2,147,483,647)를 넘어갑니다. (단, 최댓 정수값 9,223,372,036,854,775,807의 값을 가진 Long 범위 안에는 들어옵니다.)
그래서 문자열 t에서 p의 길이만큼 자른 다음 p와 비교하므로 Long 자료형의 정숫값으로 바꿔준 다음에 두 정수를 비교해도 되지만, 저는 두 문자열 자체로 값을 하나씩 비교함으로써 대소 비교를 하는 방식으로 해결했습니다.
✏️ 코드
class Solution {
public int solution(String t, String p) {
int answer = 0;
int p_len = p.length();
int t_len = t.length();
// 부분 문자열 중 p보다 작거나 같은 수의 개수를 구하기
for (int i = 0; i <= t_len - p_len; ++i) {
String sub = t.substring(i, i + p_len);
if (isLower(sub, p)) {// p보다 작거나 같은지 확인
++answer;
}
}
return answer;
}
private boolean isLower(String sub, String p) {
int sub_len = sub.length();
int p_len = p.length();
if (sub_len > p_len) { // 길이가 작으면 작은것임
return false;
} else if (sub_len < p_len) { // 길이 크면 큰 것임
return true;
}
for (int i = 0; i < sub_len; ++i) {
if (sub.charAt(i) < p.charAt(i)) {
return true;
} else if (sub.charAt(i) > p.charAt(i)) {
return false;
}
}
return true;
}
}
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스/Java] 68935 3진법 뒤집기 (0) | 2024.11.22 |
---|---|
[프로그래머스/sql] 59412 입양 시각 구하기(1) (0) | 2024.11.22 |
[프로그래머스/sql] 59409 중성화 여부 파악하기 (0) | 2024.11.21 |
[프로그래머스/sql] 132202 진료과별 총 예약 횟수 출력하기 (2) | 2024.11.21 |
[프로그래머스/Java] 12930 이상한 문자 만들기 (1) | 2024.11.20 |