substring으로 문자열을 자르면 될 것 같았지만 다른 방법이 없을까 고민 하는데에 시간이 걸린 문제이다. 결국 substring으로 풀어내고, 다른 사람의 풀이를 보았는데 대부분 다 substring으로 문제를 해결했더라!
일정이 있어 급하게 풀어내느라 while(true)를 사용했는데 코드에서 제일 거슬리는 부분이다..
Substring.java
package com.example.Programmers.Lv1;
/**
* 프로그래머스 Lv1 - 크기가 작은 부분문자열
*/
public class Substring {
public int solution(String t, String p) {
int answer = 0;
long loopMax = t.length();
long part = p.length();
long index = 0;
while(true) {
// t String의 범위를 넘어갈 경우 반복 종료
if(index + part > loopMax) {
break;
}
// 부분문자열 구한 후 p와 값 비교
String result = t.substring((int) index, (int) (part + index));
if(Long.parseLong(result) <= Long.parseLong(p)) {
answer++;
}
index++;
}
return answer;
}
}
SubstringTest.java
package com.example.Programmers.Lv1;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class SubstringTest {
@Test
public void substringTest() {
Substring ss = new Substring();
int result1 = ss.solution("3141592", "271");
int result2 = ss.solution("500220839878", "7");
int result3 = ss.solution("10203", "15");
assertEquals(2, result1);
assertEquals(8, result2);
assertEquals(3, result3);
}
}