문제
1076번: 저항
첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 위의 표에 있는 색만 입력으로 주어진다.
www.acmicpc.net
문제
전자 제품에는 저항이 들어간다. 저항은 색 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이 된다.
입력
첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 위의 표에 있는 색만 입력으로 주어진다.
출력
입력으로 주어진 저항의 저항값을 계산하여 첫째 줄에 출력한다.
예제 입력 1 복사
yellow
violet
red
예제 출력 1 복사
4700
예제 입력 2 복사
orange
red
blue
예제 출력 2 복사
32000000
예제 입력 3 복사
white
white
white
예제 출력 3 복사
99000000000
출처
- 문제를 번역한 사람: baekjoon
- 어색한 표현을 찾은 사람: shiroed1211
알고리즘 분류
#include<stdio.h>
#include<string.h>
int findColor();
int main(void) {
int i, co;
long long value = 0;
for(i=0;i<3;i++){
co = findColor();
if(i==0){
value += co * 10;
}
else if(i==1){
value += co;
}
else if(i==2 && co != 0){
for(int j = 0;j<co;j++){
value *= 10;
}
}
}
printf("%lld", value);
}
int findColor(){
char color[7];
scanf("%s", color);
if(strcmp(color,"black") == 0)
return 0;
else if(strcmp(color,"brown") == 0)
return 1;
else if(strcmp(color,"red") == 0)
return 2;
else if(strcmp(color,"orange") == 0)
return 3;
else if(strcmp(color,"yellow") == 0)
return 4;
else if(strcmp(color,"green") == 0)
return 5;
else if(strcmp(color,"blue") == 0)
return 6;
else if(strcmp(color,"violet") == 0)
return 7;
else if(strcmp(color,"grey") == 0)
return 8;
else if(strcmp(color,"white") == 0)
return 9;
else
return findColor();
}
// <math.h>의 pow(x,y)에는 변수가 들어가지지 않았음.
값이 int 값을 넘은 정수 값을 표현해야 하기 때문에 longlong을 사용 했습니다.
string.h 에 포함된 문자열 비교 strcmp를 통해서 동일한 값이라면 0을 반환하므로 해당 값에 맞게 끔 값을 리턴해
co 에 리턴값을 받아줍니다.
승수 계산에 있어서
math.h를 사용하면 더 편리 했지만, 숫자 값만 동작하고 변수의 경우 작동하지 않았기 때문에
for문으로 처리했습니다.
Git Hub
BaekJoon-Study/1076 : 저항.c at C · GUuu9/BaekJoon-Study (github.com)
GitHub - GUuu9/BaekJoon-Study
Contribute to GUuu9/BaekJoon-Study development by creating an account on GitHub.
github.com
'백준 코드 공부 > C언어' 카테고리의 다른 글
백준 1764 : 듣보잡 (C언어) (2) | 2021.12.05 |
---|---|
백준 1236 : 성지키기 (C언어) (0) | 2021.12.05 |
백준 1453 : 피시방 알바 (C언어) (0) | 2021.12.04 |
백준 10866 : 덱 (C언어) (0) | 2021.11.27 |
백준 10845 : 큐 (C언어) (0) | 2021.11.27 |