문제
전자 제품에는 저항이 들어간다. 저항은 색 3개를 이용해서 그 저항이 몇 옴인지 나타낸다. 처음 색 2개는 저항의 값이고, 마지막 색은 곱해야 하는 값이다. 저항의 값은 다음 표를 이용해서 구한다.

예를 들어, 저항의 색이 yellow, violet, red였다면 저항의 값은 4,700이 된다.
조건 및 입출력
- 첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 위의 표에 있는 색만 입력으로 주어진다.
- 입력으로 주어진 저항의 저항값을 계산하여 첫째 줄에 출력한다.
- 시간 제한: 2초 이내 / 메모리 제한: 128MB 이내
코드 (C99)
#include <stdio.h>
#include <string.h>
#include <math.h>
enum color { black, brown, red, orange, yellow, green, blue, violet, grey, white };
//프로토타입 선언부
int color_value(char* color);
main()
{
int oma[3] = { 0 };
long long result;
for (int i = 0; i < 3; i++)
{
char color[10] = { 0 };
scanf("%s", color);
oma[i] = color_value(color);
}
result = (oma[0] * 10 + oma[1]) * (long long)pow(10, oma[2]);
printf("%lld", result);
return 0;
}
int color_value(char* color)
{
if (strcmp(color, "black") == 0) return black;
if (strcmp(color, "brown") == 0) return brown;
if (strcmp(color, "red") == 0) return red;
if (strcmp(color, "orange") == 0) return orange;
if (strcmp(color, "yellow") == 0) return yellow;
if (strcmp(color, "green") == 0) return green;
if (strcmp(color, "blue") == 0) return blue;
if (strcmp(color, "violet") == 0) return violet;
if (strcmp(color, "grey") == 0) return grey;
if (strcmp(color, "white") == 0) return white;
}
여담
enum(열거형)을 이용해 문제를 풀이했다.
물론, 안쓰고도 풀이할 수 있겠지만 가독성을 위해 사용하였다.
이번 문제는 enum을 사용하여 문제를 풀었다는 것에 의의를 두려고 한다.
| 코드가 이상하거나, 이해되지 않는 부분이 있다면 댓글 남겨주세요! + 더 좋은 풀이 방법이 있다면 알려주세요 :) |
'Programming > C언어' 카테고리의 다른 글
| [백준] 2108번 : 통계학 (C언어 / C99) (0) | 2023.07.17 |
|---|---|
| [백준] 2851번 : 슈퍼 마리오 (C언어 / C99) (0) | 2023.07.14 |
| [백준] 10811번 : 바구니 뒤집기 (C언어 / C99) (0) | 2023.07.12 |
| [백준] 1735번 : 분수 합 (C언어 / C99) (0) | 2023.07.11 |
| [백준] 28295번 : 체육은 코딩과목 입니다 (C언어 / C99) (0) | 2023.07.10 |