Notice
Recent Posts
문제 풀이 및 개발 공간
[백준] 17478번 재귀함수가 뭔가요? 문제! (silver 5 본문
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
static StringBuilder sb=new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));//굳이 없어도됨
int num=Integer.parseInt(br.readLine());
System.out.println("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.");
chatbot(num);
}
public static void chatbot(int n) {
if(n==0) {
System.out.println(sb+"\"재귀함수가 뭔가요?\"");
System.out.println(sb+"\"재귀함수는 자기 자신을 호출하는 함수라네\"");
System.out.println(sb+"라고 답변하였지.");
return;
}
else {
System.out.println(sb+"\"재귀함수가 뭔가요?\"");
System.out.println(sb+"\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.");
System.out.println(sb+"마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.");
System.out.println(sb+"그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"");
sb.append("____");
chatbot(n-1);
sb.delete(0,4);
System.out.println(sb+"라고 답변하였지.");
}
}
}
//문장 똑같이 입력, -가 아닌 _입력 등을 해야되는데 자세히 살펴보지 않다보니 까다롭게 느껴졌다.
위와같이 출력을 할 경우 백준에서 160ms가 뜬다.
이때 출력을 bufferedwriter로 바꾸면
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
static StringBuilder sb=new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int num=Integer.parseInt(br.readLine());
System.out.println("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.");
chatbot(num);
}
public static void chatbot(int n)throws IOException {
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
if(n==0) {
bw.write(sb+"\"재귀함수가 뭔가요?\"\n");
bw.write(sb+"\"재귀함수는 자기 자신을 호출하는 함수라네\"\n");
bw.write(sb+"라고 답변하였지.\n");
bw.flush();
return;
}
else {
bw.write(sb+"\"재귀함수가 뭔가요?\"\n");
bw.write(sb+"\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n");
bw.write(sb+"마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n");
bw.write(sb+"그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n");
sb.append("____");
bw.flush();
chatbot(n-1);
sb.delete(0,4);
bw.write(sb+"라고 답변하였지.\n");
}
bw.flush();
}
}
위와 같이 되는데 이때 148ms가 걸린다.
bufferedwriter로 출력을 할 때 주의사항은 bw.writer를 하고서, bw.flush()를 통해 계속 버퍼를 비워낸다.
'백준공부 > java' 카테고리의 다른 글
[백준] 10870번 피보나치 수 5 문제! (bronze 5 (0) | 2022.07.23 |
---|---|
[백준] 3009번 네 번째 점 문제! (bronze 3 (0) | 2022.07.22 |
[백준] 10872번 팩토리얼 문제! (bronze 5 (0) | 2022.07.22 |
[백준] 11382번 꼬마 정민 문제! (bronze 5 (0) | 2022.07.21 |
[백준] 1259번 팰린드롬수 문제! (bronze 1 (0) | 2022.07.21 |