contains 함수를 생각 못하고
while (totalCnt != n) {
str = Integer.toString(num);
for (i = 0; i < str.length() - 2; i++) {
if (str.substring(i, i + 3).equals("666")) {
totalCnt++;
break;
}
}
num++;
}
이런 식으로 매 숫자마다 String을 생성하고 또 substring으로 생성하고, 해당 String의 index를 생각해서 했더니 메모리 초과가 발생했다. String이 너무 많아지니 당연히 메모리 초과가 발생하는 건데 메모리도 생각하며 짜도록 해야겠다.
정답 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class BOJ1436 {
static BufferedReader br;
static int n, totalCnt, num, i;
static String str;
public static void main(String[] args) throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
totalCnt = 0;
num = 666; // 666부터 check
while (totalCnt != n) {
if (String.valueOf(num).contains("666")) {
totalCnt++;
}
num++;
}
System.out.println(num - 1);
}
}
'온라인 저지 > BOJ' 카테고리의 다른 글
[BOJ/Java] 18258 큐2, 10866 덱 (0) | 2022.02.13 |
---|---|
[BOJ/Java] 11047 동전 0 (0) | 2022.02.13 |
[BOJ/Java] 1406 에디터 (0) | 2022.02.13 |
[BOJ/Java] 1021 회전하는 큐 (0) | 2022.02.13 |
[BOJ/Java] 2563 색종이 (0) | 2022.02.11 |
댓글