백준 코드 공부/C언어

백준 1076 : 저항 (C언어)

GUuu9 2021. 12. 4. 13:39

문제

1076번: 저항 (acmicpc.net)

 

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

출처

알고리즘 분류

 


#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