언유상씨의 건전한 취미생활

[백준 알고리즘] 저항(1076번) C로풀기 본문

건전한 취미생활 - 알고리즘

[백준 알고리즘] 저항(1076번) C로풀기

언유상 2020. 2. 5. 19:38

문제 이름 : 저항

문제 번호 : 1076

사용 언어 : C

문제 유형 : 구현

 

문제는 다음과 같다.

이번에는 사람 이름이 없다.

이 문제의 핵심 아이디어는 각 입력값을 문제가 원하는 대로 처리하기 위해 배열과, 조건문을 사용한다는 것이다.

 

n이라는 변수가 들어온다고 했을때, 첫 번째로 입력받는 값은 10의 자리숫자이고, 두번째로 받은 숫자는 일의 자리 숫자이므로 조건문을 통해 몇번째로 들어온 숫자인지 확인하고, 그에 맞는 값을 이용하면 된다.

 

마지막에 곱해줘야 하는 값은 배열을 통해 인덱스로 접근한다.

 

따라서 코드는 다음과 같다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main() {
    int gb[11] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };
    int n;
    int temp = 0;
    for (int i = 0; i < 3; i++) { // 몇번째로 입력받는 숫자인지 확인하는 장치가 된다.
        char n1[10];

        scanf("%s", &n1);

        if ((strcmp("black", n1) == 0)) { // 입력받은 문자가 원하는 문자가 맞는지 확인
            n = 0;} //여기서의 n은 1의 자리나 10의 자리나 모두 0이므로 그냥 0이 된다.
        else if ((strcmp("brown", n1) == 0)) {
            if (i == 1 || i == 2)
                n = 1; 
            else n = 10;}
        else if ((strcmp("red", n1) == 0)) {
            if (i == 1 || i == 2)
                n = 2; 
            else n = 20; }
        else if ((strcmp("orange", n1) == 0)) {
            if (i == 1 || i == 2)
                n = 3; 
            else n = 30; }
        else if ((strcmp("yellow", n1) == 0)) {
            if (i == 1 || i == 2)
                n = 4; 
            else n = 40; }
        else if ((strcmp("green", n1) == 0)) {
            if (i == 1 || i == 2)
                n = 5; 
            else n = 50; }
        else if ((strcmp("blue", n1) == 0)) {
            if (i == 1 || i == 2)
                n= 6; 
            else n = 60; }
        else if ((strcmp("violet", n1) == 0)) {
            if (i == 1 || i == 2)
                n = 7; 
            else n = 70; }
        else if ((strcmp("grey", n1) == 0)) {
            if (i == 1 || i == 2)
                n = 8; 
            else n = 80; }
        else if ((strcmp("white", n1) == 0)) { 
            if (i == 1 || i == 2)
                n = 9; 
            else n = 90; }
        temp += n; //temp라는 변수를 이용해서 두개의 숫자를 받아 합연산을 진행
    }
    printf("%.0f",(double)(temp - n) * gb[n]); // 곱해야 할 수는 배열의 인덱스를 이용해서 곱하고, 출력값을 설정해준다.
    return 0;
}

Comments