반응형
- 문제 설명 : 빨강(red), 초록(green), 파랑(blue) 빛을 섞어 여러 가지 빛의 색을 만들어 내려고 한다. 빨강(r), 초록(g), 파랑(b) 각각의 빛의 개수가 주어질 때(빛의 강약에 따라 0 ~ n-1까지 n가지의 빛 색깔을 만들 수 있다.), 주어진 rgb 빛들을 다르게 섞어 만들 수 있는 모든 경우의 조합(r g b)과 총가짓수를 계산해보자.
→ 결국은 변수 r g b에 임의로 개수를 입력했을 때, r g b가 조합되는 모든 경우와 그 경우의 수를 출력하라는 것이다. - 입력 : 빨녹파(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 - 내 소스
#include <stdio.h> int main() { int i, j, k, c = 0; int r, g, b; scanf("%d %d %d", &r, &g, &b); for(i = 0; i <= r - 1; i++) { for(j = 0; j <= g - 1; j++) { for(k = 0; k <= b - 1; k++) { printf("%d %d %d\n", i, j, k); c++; } } } printf("%d\n", c); return 0; }
- 모범 소스
#include <stdio.h> int main() { int i, a, b, c, j, k, cnt=0; scanf("%d%d%d", &a, &b, &c); for(i=0; i<a, i++) { for(j=0; j<b; j++) { for(k=0; k<c; k++) { printf("%d %d %d\n", i, j, k); cnt++; } } } printf("%d", cnt); return 0; }
- 질문
- 모범 소스를 보면 변수에 scanf함수를 이용해서 정수를 입력 시 띄어쓰기가 없이 "%d%d%d"로 되어있다. 띄어쓰기를 해주지 않아도 되는 것인가?
→모범 소스를 컴파일해서 값을 입력해 봤다.
2 2 2를 입력한 경우, 아무 문제없이 출력 값이 나왔다.
222를 입력한 경우 개행만 일어나고 아무 일도 일어나지 않아 2 2 2를 입력했더니 222 2 2를 입력한 것과 같은 결과가 나왔다.
→결론 : scanf함수를 사용하여 값을 입력받을 때, 두 개 이상의 값을 입력받는 다면 기본적으로 띄어쓰기로 값을 구분하므로 굳이 '%d %d %d' 이렇게 코드를 쓰지 않아도 되는 것 같다.
- 모범 소스를 보면 변수에 scanf함수를 이용해서 정수를 입력 시 띄어쓰기가 없이 "%d%d%d"로 되어있다. 띄어쓰기를 해주지 않아도 되는 것인가?
반응형
'Algorithm > CodeUp' 카테고리의 다른 글
[CodeUp] 코드업 1086 [기초-종합] 그림 파일 저장 용량 계산하기 - C 언어 (0) | 2021.06.03 |
---|---|
[CodeUp] 코드업 1085 [기초-종합] 소리 파일 저장 용량 계산하기 - C 언어 (0) | 2021.06.02 |
[CodeUp] 코드업 1083 [기초-종합] 3 6 9 게임의 왕이 되자! - C 언어 (0) | 2021.05.27 |
[CodeUp] 코드업 1082 [기초-종합] 16진수 구구단? - C 언어 (0) | 2021.05.26 |
[CodeUp] 코드업 1081 [기초-종합] 주사위를 2개 던지면? - C 언어 (0) | 2021.05.25 |