코드업 빛 섞어 색 만들기
문제
빨강(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
다른 사람 풀이
- 모든 경우의 조합이라는 문제가 나왔을 때 combination(조합)을 사용하는 것이 아닌 경우의 수를 찾는 문제(brute force)이다
- 또 색의 가짓수가 모두 몇 개인지 계산할 때는 각각 경우의 수를 모두 곱해주면 된다. 예를 들어 RGB의 각각 경우의 수가
3개라고 가정하면, 모든 경우의 수는 27가지가 된다.
알고리즘
- 경우의 수를 모두 찾는 문제이기 때문에 3중 for문을 이용해서 풀었다.
- 배운점은 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문으로 출력순서 이용
댓글남기기