Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

사고쳤어요

[백준] 1076 저항 (C++) 본문

백준/Bronze

[백준] 1076 저항 (C++)

kevinmj12 2023. 1. 17. 23:33

링크: https://www.acmicpc.net/problem/1076

 

1076번: 저항

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

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이 된다.

입력

첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 위의 표에 있는 색만 입력으로 주어진다.

출력

입력으로 주어진 저항의 저항값을 계산하여 첫째 줄에 출력한다.


풀이

black, brown, red, ... white 의 순서대로 벡터를 만든 후 입력받은 색들이 몇 번째에 있는지를 찾는다. 

처음엔 (color1 * 10 + color2) * int(pow(10, color3)) 와 같이 구하려 하였으나 white, white, white와 같은 경우 int의 범위를 초과하여 string의 형식으로 출력하였다.

 

코드

#include <iostream>
#include <string>
#include <vector>
#include <algorithm> // find() 함수를 사용하기 위해 필요
using namespace std;


int main(){
    vector<string> color = {"black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white"};
    
    string color1, color2, color3;
    cin >> color1 >> color2 >> color3;
    
    auto it1 = find(color.begin(), color.end(), color1); // color 벡터에서 color1이 몇 번째에 있는지를 찾아준다.
    auto it2 = find(color.begin(), color.end(), color2);
    auto it3 = find(color.begin(), color.end(), color3);

    int index1 = it1 - color.begin();
    int index2 = it2 - color.begin();
    int index3 = it3 - color.begin();
    
    string answer = to_string(index1 * 10 + index2); // white, white, white와 같은 경우 int의 범위를 초과하기에 string으로 처리하였다.
    if (answer != "0"){ // 답이 0인 경우에는 0으로 출력하기 위해 조건문을 작성하였다.
        for (int i = 0; i < index3; i++){
            answer += "0";
        }
    }
    
    cout << answer;
}

'백준 > Bronze' 카테고리의 다른 글

[백준]팰린드롬수(c++)  (0) 2023.07.08
[백준] 1075 나누기 (C++)  (0) 2023.01.11
[백준] 1009 분산처리 (C++)  (0) 2023.01.10