문제
전자 제품에는 저항이 들어간다. 저항은 색 3개를 이용해서 그 저항이 몇 옴인지 나타낸다. 처음 색 2개는 저항의 값이고, 마지막 색은 곱해야 하는 값이다. 저항의 값은 다음 표를 이용해서 구한다.
black | 0 | 1 |
brown | 1 | 10 |
red | 2 | 100 |
orange | 3 | 1,000 |
yellow | 4 | 10,000 |
green | 5 | 100,000 |
blue | 6 | 1,000,000 |
violet | 7 | 10,000,000 |
grey | 8 | 100,000,000 |
white | 9 | 1,000,000,000 |
예를 들어, 저항의 색이 yellow, violet, red였다면 저항의 값은 4,700이 된다.
입력
첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 위의 표에 있는 색만 입력으로 주어진다.
출력
입력으로 주어진 저항의 저항값을 계산하여 첫째 줄에 출력한다.
풀이 과정
첫 번째 색과 두 번째 색은 저항의 값이다. grey와 violet 이 나온다면 87, red와 orange 가 나온다면 23 이다.
세 번째 색은 곱해야 하는 값이다. 저항의 값에 색에 해당하는 곱 값을 곱하여 저항값을 계산한다.
입력받은 문자열이 색 단어와 동일한지 확인하는 과정이 필요하다.
C
#include <stdio.h>
#include <string.h>
int colorMatch(char* str) {
if (!strcmp(str, "black")) return 0;
if (!strcmp(str, "brown")) return 1;
if (!strcmp(str, "red")) return 2;
if (!strcmp(str, "orange")) return 3;
if (!strcmp(str, "yellow")) return 4;
if (!strcmp(str, "green")) return 5;
if (!strcmp(str, "blue")) return 6;
if (!strcmp(str, "violet")) return 7;
if (!strcmp(str, "grey")) return 8;
if (!strcmp(str, "white")) return 9;
}
long long power(int n, int k) {
if (k == 0) return 1;
else return (long long)n * power(n, k - 1);
}
int main(void) {
char first[10];
char second[10];
char third[10];
scanf("%s", first);
scanf("%s", second);
scanf("%s", third);
long long result = (colorMatch(first) * 10 + colorMatch(second)) * power(10, colorMatch(third));
printf("%lld", result);
return 0;
}
Python
import sys
input = sys.stdin.readline
first = input().rstrip()
second = input().rstrip()
third = input().rstrip()
color = {'black':0, 'brown':1, 'red':2, 'orange':3, 'yellow':4,
'green':5, 'blue':6, 'violet':7, 'grey':8, 'white':9}
print((color[first] * 10 + color[second]) * pow(10, color[third]))
'-- 예전 기록 > BOJ' 카테고리의 다른 글
[ BOJ ] 1296 : 팀 이름 정하기 ( BRONZE 1 ) / C, Python (0) | 2023.11.20 |
---|---|
[ BOJ ] 25166 : 배고픈 아리의 샌드위치 구매하기 ( BRONZE 1 ) / C, Python (0) | 2023.11.19 |
[ BOJ ] 20114 : 미아 노트 ( SILVER 5 ) / C, Python (0) | 2023.11.18 |
[ BOJ ] 12871 : 무한 문자열 ( SILVER 5 ) / C, Python (0) | 2023.11.18 |
[ BOJ ] 11944 : NN ( BRONZE 2 ) / C, Python (0) | 2023.11.17 |