문제
1 번째 시도
보자마자 윈도우 알고리즘이 떠올랐습니다.
n의 길이만큼의 새로운 윈도우 배열을 만들어줍니다.
원도우를 t에 비추어 보며 옆으로 한칸씩 밀어보면 됩니다.
예제 1번을 예시로 들어보겠습니다
t = "314592", n = "271"
윈도우 배열 1 번째 314
윈도우 배열 2 번째 145
윈도우 배열 3 번째 459
.
.
.
이런 식입니다.
아이디어는 나왔으니 자료구조에 대해 고민해볼 차례입니다.
숫자를 비교해야 하는데 String으로 준 이유가 있을겁니다.
제 생각에는 비교를 용이하기 위해 String으로 준 것 같습니다.
숫자를 자릿수 별로 비교하게 되면 나누기 등 굉장히 골치아프게 됩니다.
String은 charAt()함수, split()함수, StringBuffer, StringBuilder 등이 있어 비교에 용이합니다.
저는 속도 측면을 고려하여 StringBuffer를 사용했습니다.
class Solution {
public int solution(String t, String p) {
int result = 0;
int tExploration = t.length() - p.length() + 1;
for(int i =0; i < tExploration; i++) {
StringBuffer sb = new StringBuffer();
for(int j = i; j < i + p.length(); j++) {
sb.append(t.charAt(j));
}
if( Long.parseLong(p) >= Long.parseLong(sb.toString()))
result++;
}
return result;
}
}
'알고리즘' 카테고리의 다른 글
항해99 TIL 9일차(기사단원의 무기 / 프로그래머스) (1) | 2024.04.03 |
---|---|
항해99 TIL 8일차 (피보나치 수 / 프로그래머스) (0) | 2024.04.02 |
항해99 TIL 6일차 (삼각 달팽이 / 프로그래머스) (0) | 2024.03.31 |
항해99 TIL 5일차 (숫자 문자열과 영단어 / 프로그래머스) (0) | 2024.03.30 |
항해99 TIL 4일차 (체육복 / 프로그래머스) (1) | 2024.03.29 |