본문 바로가기

백준 문제 풀이

백준 1076 저항(C++)

728x90

 뭔가 PS하나는 풀고싶은데 머리는 쓰기싫어서 브론즈 문제 하나 풀어봤다!

그냥 열심히 매핑하고 값이 매우 크니까 long long 자료형을 쓰고 쓸대없지만 왜인지 처음에 문자열로 더할 값을 받아서 문자를 정수로 바꿔줬다.

 

#include<iostream>
#include<vector>
#include<map>
using namespace std;
map <string, long long > reg;
map <string, char > regi;

int main() {
	reg.insert(make_pair("black", 1));
	reg.insert(make_pair("brown", 10));
	reg.insert(make_pair("red", 100));
	reg.insert(make_pair("orange", 1000));
	reg.insert(make_pair("yellow", 10000));
	reg.insert(make_pair("green", 100000));
	reg.insert(make_pair("blue", 1000000));
	reg.insert(make_pair("violet", 10000000));
	reg.insert(make_pair("grey", 100000000));
	reg.insert(make_pair("white", 1000000000));

	regi.insert(make_pair("black", '0'));
	regi.insert(make_pair("brown", '1'));
	regi.insert(make_pair("red", '2'));
	regi.insert(make_pair("orange", '3'));
	regi.insert(make_pair("yellow", '4'));
	regi.insert(make_pair("green", '5'));
	regi.insert(make_pair("blue", '6'));
	regi.insert(make_pair("violet", '7'));
	regi.insert(make_pair("grey", '8'));
	regi.insert(make_pair("white", '9'));
	string a, b, c;
	cin >> a >> b >> c;

	long long num;
	num = (regi[a] - '0') * 10 + (regi[b] - '0');
	cout << num * reg[c] << endl;
}