관리 메뉴

콩부방

1084 : [기초-종합] 빛 섞어 색 만들기(설명) 본문

카테고리 없음

1084 : [기초-종합] 빛 섞어 색 만들기(설명)

콩이아부지이 2021. 8. 8. 12:49
728x90

빨강(red), 초록(green), 파랑(blue) 빛을 섞어
여러 가지 빛의 색을 만들어 내려고 한다.

빨강(r), 초록(g), 파랑(b) 각각의 빛의 개수가 주어질 때,
(빛의 강약에 따라 0 ~ n-1 까지 n가지의 빛 색깔을 만들 수 있다.)

주어진 rgb 빛들을 다르게 섞어 만들 수 있는 모든 경우의 조합(r g b)과
총 가짓 수를 계산해보자.


예시
int i, j, k, c=0;
int r, g, b;
scanf("%d%d%d”, &r, &g, &b);

for(i=0; i<r; i++)
  for(j=0; j<g; j++)
    for(k=0; k<b; k++)
    {
      printf("%d %d %d\n", i, j, k);
      c++;
    }

printf("%d ", c);

입력

빨녹파(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.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
// import 추가 단축키 ctrl+shift+o
public class Main {

	public static void main(String[] args) {
		//BufferedReader : Scanner와 비슷
		//BufferedWriter : System.out.println()과 비슷 
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));        
		try {//try {} 안에서 예외가 발생하면 바로 catch로 이동하여 처리 (예외발생할 가능성이 있는문장 입력)
			String[] n = br.readLine().split(" ");
			//readLine()메소드 return값 String타입이라 출력시엔 상황에 맞는 타입으로 형변환 하여출력
			//스트링배열 n에 공백 구분해서 입력 2 2 2 
			int count = 0;
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
			for (int i = 0; i < Integer.valueOf(n[0]); i++) { 
				for (int j = 0; j < Integer.valueOf(n[1]); j++) { 
					for (int k = 0; k < Integer.valueOf(n[2]); k++) {
						bw.write(i + " " + j + " " + k + "\n");//write()메소드로 출력할 내용 담기
						count++;
					}
				}
			}
			bw.write(String.valueOf(count));
			bw.flush();
			bw.close();
		} catch (NumberFormatException e) {
			e.printStackTrace();
			// 예외발생당시의 호출스택(Call Stack)에 있었던 메서드의 정보와 예외 메세지를 콘솔화면에 출력한다. 
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
}
728x90
Comments