728x90
반응형
코드업 자바
# 1084 [기초-종합] 빛 섞어 색 만들기
링크 : https://codeup.kr/problem.php?id=1084
내 풀이_시간 초과
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int count = 0;
for(int i=0; i<a; i++)
{
for(int j = 0; j<b; j++)
{
for(int k=0; k<c; k++)
{
System.out.println(i+" "+j+" "+k);
count += 1;
}
}
}
System.out.println(count);
}
}
- 자바 문제를 풀면서 시간 초과를 처음 맞딱뜨렸다
- 자바의 Scanner는 입력 속도가 느리다고 한다. Scanner를 대신하기 위해 BufferdReader를 사용할 수 있따
- cf. python에서 input() 대신 sys.stdin.readline()을 쓰는 방식과 비슷해 보인다
시간초과 문제 해결
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] s = br.readLine().split(" ");
int count = 0;
for(int i=0;i<Integer.valueOf(s[0]); i++) {
for(int j=0;j<Integer.valueOf(s[1]); j++) {
for(int k=0;k<Integer.valueOf(s[2]); k++) {
bw.write(i+" "+j+" "+k+"\n");
count++;
}
}
}
bw.write(String.valueOf(count));
bw.flush();
}
}
- BufferedReader를 사용하기 전 throws IOException{} 을 적용해주어야 한다
- InputStreamReader() 에는 System.in, OutputstreamWriter() 에는 System.out 을 넣어야 한다
- BufferedReader는 String으로 입력값을 받게 되므로 형변환을 반드시 해주어야 한다
- String[] s : String 리스트 s를 만들어 br.readLine()값을 입력한다. split()을 통해 분리 기준을 설정할 수 있다
- BufferedReader를 통해 만든 변수의 출력은 bw.write()를 사용한다. 출력에 대해서도 String으로 형 변환을 해주어야 한다
- bw.flush() 를 통해 버퍼를 초기화해야 한다 (안하면 출력이 진행되지 않았음)
꽤나 애먹었다. Buffer를 이용한 입출력 사용법에 익숙해지도록 하자.
'Algorithm Study > Java' 카테고리의 다른 글
[코드업 자바] # 1090 [기초-종합] 수 나열하기2 (0) | 2021.12.26 |
---|---|
[코드업 자바] # 1085 [기초-종합] 소리 파일 저장용량 계산하기 (0) | 2021.12.26 |
[코드업 자바] # 1082 [기초-종합] 16진수 구구단? (0) | 2021.12.25 |
[코드업 자바] # 1079 [기초-종합] 원하는 문자가 입력될 때까지 반복 출력하기 (0) | 2021.12.25 |
[코드업 자바] # 1076 [기초-반복실행구조] 문자 1개 입력받아 알파벳 출력하기 (0) | 2021.12.25 |