본문 바로가기

알고리즘/순열, 조합

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

728x90
반응형

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


입력

빨녹파(r, g, b) 각 빛의 강약에 따른 가짓수(0 ~ 128))가 공백을 사이에 두고 입력된다.
예를 들어, 3 3 3 은 각 색깔 빛에 대해서 그 강약에 따라 0~2까지 3가지의 색이 있음을 의미한다.

 

출력

만들 수 있는 rgb 색의 정보를 오름차순(계단을 올라가는 순, 12345... abcde..., 가나다라마...)으로
       줄을 바꿔 모두 출력하고, 마지막에 그 개수를 출력한다.

-> Scanner와 System.out.println()을 사용하여 문제를 풀었더니 시간초과가 발생했다. 

 

해결방법

BufferdReader와 BufferedWriter를 사용하여 해결

 

 

기존코드

 

 

변경코드

import java.util.Scanner;
import java.io.*;
class Main {
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		try{
			BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
			String a=br.readLine();
			String[] arr=a.split(" ");
			int count=0;

			for(int i=0;i<Integer.valueOf(arr[0]);i++){
				for(int j=0;j<Integer.valueOf(arr[1]);j++){
					for(int k=0;k<Integer.valueOf(arr[2]);k++){
						bw.write(i+" "+j+" "+k+"\n");
						count++;
					}
				}
			}
			bw.write(String.valueOf(count));
			bw.flush();
		}catch(IOException e){
			e.printStackTrace();
		}
		
	}
}

* 두 개의 코드는 같은 결과값을 보이지만 처리되는 시간과 메모리에 있어 배가 넘는 차이를 가졌다.

 

728x90
반응형