CodeUp 1084 : [기초-종합] 빛 섞어 색 만들기(설명)
빨강(red), 초록(green), 파랑(blue) 빛을 섞어
여러 가지 빛의 색을 만들어 내려고 한다.
빨강(r), 초록(g), 파랑(b) 각각의 빛의 개수가 주어질 때,
(빛의 강약에 따라 0 ~ n-1 까지 n가지의 빛 색깔을 만들 수 있다.)
주어진 rgb 빛들을 다르게 섞어 만들 수 있는 모든 경우의 조합(r g b)과
총 가짓 수를 계산해보자.
입력
빨녹파(r, g, b) 각 빛의 강약에 따른 가짓수(0 ~ 128))가 공백을 사이에 두고 입력된다.
예를 들어, 3 3 3 은 각 색깔 빛에 대해서 그 강약에 따라 0~2까지 3가지의 색이 있음을 의미한다.
출력
만들 수 있는 rgb 색의 정보를 오름차순(계단을 올라가는 순, 12345... abcde..., 가나다라마...)으로
줄을 바꿔 모두 출력하고, 마지막에 그 개수를 출력한다.
입력 예시
2 2 2
출력 예시
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
8
첫번째 코드: 시간초과
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int cnt = 0;
int r, g, b;
Scanner sc = new Scanner(System.in);
r = sc.nextInt();
g = sc.nextInt();
b = sc.nextInt();
sc.close();
for(int i=0; i<r; i++)
for(int j=0; j<g; j++)
for(int k=0; k<b; k++) {
System.out.printf("%d %d %d\n", i, j, k);
cnt++;
}
System.out.println(cnt);
}
}
문제는 Scanner.
bufferedReader/ bufferedWriter를 사용하면 많은 양의 데이터를 한꺼번에 담아 처리하기 때문에 스캐너보다 빠르게 처리할 수 있다.
하지만 IOException 예외처리가 필수.
정리가 너무 잘 되어있어서 그대로 가져왔음.
두번째 코드: 통과
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
int cnt = 0;
int r, g, b;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
r = Integer.parseInt(st.nextToken());
g = Integer.parseInt(st.nextToken());
b = Integer.parseInt(st.nextToken());
String s ="";
for(int i=0; i<r; i++) {
for(int j=0; j<g; j++) {
for(int k=0; k<b; k++) {
s = i + " " + j + " " + k + "\n";
bw.write(s);
cnt++;
}
}
}
bw.write(Integer.toString(cnt)); //여기서 toString 처리를 해주지않으면 출력되지 않는다.
bw.close();
}
}
'Backend > Algorithm' 카테고리의 다른 글
19. toLowerCase, charAt - 문자열 내 p와 y의 개수 (0) | 2020.11.12 |
---|---|
18. ArrayList - 문자열 내 마음대로 정렬하기 (0) | 2020.11.12 |
12. 비트단위시프트연산자 <<, >> (0) | 2020.11.04 |
11. copyOfRange, sort - K번째 수 (0) | 2020.10.31 |
10. greedy - 체육복 (0) | 2020.10.30 |