1. 오늘 학습한 내용
소수(에라토스테네스의 체), 백트래킹 문제 백준 1929,15650,15651번 문제
2. 알게 된 내용
static void func(int at, int depth) { // at은 현재 위치 (어디서부터 시작하는지를 의미하는 변수)
if (depth == M) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
return;
}
for (int i = at; i <= N; i++) {
arr[depth] = i;
func(i + 1, depth + 1);
}
return;
}
출처 : https://st-lab.tistory.com/115
앞의 문제들보다 더 간단한 문제들인 것 같아서 빨리 끝날 수 있을 것 같았는데 시간초과가 뜨는 문제가 있었다. 그래서 sout 프린트를 BufferedWriter들로 다 고쳤고, 처음에는 한 줄을 작성할 때마다 flush해서 출력하도록 하였다. 하지만 또 시간초과가 떴고, 질의응답을 찾아보았는데 이렇게 자주 flush를 해주는 것은 버퍼를 자주 비우는 것이여서 BufferedWriter의 장점을 잘 이용하지 못하는 것이라고 한다. 그래서 일단 한방에 다 쭉 작성한 후 이 함수 호출이 완전히 끝났을 때 한방에 flush 해주는 방식으로 수정했더니 맞았습니다가 나왔다.