코드업 빛 섞어 색 만들기

1 분 소요

문제

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

빨강(r), 초록(g), 파랑(b) 각 빛의 가짓수가 주어질 때,
주어진 rgb 빛들을 섞어 만들 수 있는 모든 경우의 조합(r g b)과 만들 수 있는 색의 가짓 수를 계산해보자.

**모니터, 스마트폰과 같은 디스플레이에서 각 픽셀의 색을 만들어내기 위해서 r, g, b 색을 조합할 수 있다.
**픽셀(pixel)은 그림(picture)을 구성하는 셀(cell)에서 이름이 만들어졌다.
——

입력

빨녹파(r, g, b) 각 빛의 가짓수가 공백을 두고 입력된다.
예를 들어, 3 3 3 은 빨녹파 빛에 대해서 각각 0~2까지 3가지 색이 있음을 의미한다.
0 <= r,g,b <= 127

출력

만들 수 있는 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

다른 사람 풀이

  1. 모든 경우의 조합이라는 문제가 나왔을 때 combination(조합)을 사용하는 것이 아닌 경우의 수를 찾는 문제(brute force)이다
  2. 또 색의 가짓수가 모두 몇 개인지 계산할 때는 각각 경우의 수를 모두 곱해주면 된다. 예를 들어 RGB의 각각 경우의 수가
    3개라고 가정하면, 모든 경우의 수는 27가지가 된다.

알고리즘

  1. 경우의 수를 모두 찾는 문제이기 때문에 3중 for문을 이용해서 풀었다.
  2. 배운점은 print(‘{} {} {}’.format(x, y, z)) 와 같은 format 출력문이다.

풀이

a,b,c = map(int, input().split())

count = 0 

for x in range(a):
    for y in range(b):
        for z in range(c):
            print('{} {} {}'.format(x, y, z))
            count += 1
 
print(count)


# 어떻게 경우의수를 모두 나눠서 출력할까 -> 3중 for문
# 어떻게 오름차순으로 정렬할까 ->3중 for문으로 출력순서 이용 

카테고리:

업데이트:

댓글남기기