반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [코드업] 기초 100제 1084번 빛 섞어 색 만들기 자바(JAVA)

1) 문제번호 : 1084번

 

2) 문제 출처

codeup.kr/problem.php?id=1084

 

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

C언어기초100제v1.2 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요.  - 모든 내용

codeup.kr

2. 문제

빨강(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);

3. 제약사항

-

 

4. 입력

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

 

5. 출력

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

6. 풀이

- 간단한 for문을 이용한 반복문

7. 소스 코드

- 아래의 코드처럼 풀었더니 시간초과가 났다.

- 왜 버퍼리더와 버퍼라이터를 쓰는지 알겠다.

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.printf("%d %d %d\n",i,j,k);
					count+=1;
				}
			}
		}
		System.out.println(count);
	}
}

 

- 버퍼리더와 버퍼라이터 사용한 코드

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[] a = br.readLine().split(" ");
		
		
		int count = 0;
		for(int i=0;i<Integer.valueOf(a[0]);i++) {
			for(int j=0;j<Integer.valueOf(a[1]);j++) {
				for(int k=0;k<Integer.valueOf(a[2]);k++) {
					bw.write(i + " " + j + " " + k + "\n");
					count++;
				}
			}
		}
		bw.write(String.valueOf(count));
		bw.flush();
	}
}

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기