알고리즘 공부/C++

백준 1076번 저항 C++

마달랭 2024. 7. 21. 17:52

리뷰

unordered_map과 pow를 통해 푼 문제, C++로 문제를 풀며 처음으로 int값을 초과하는 문제였다, 문자열로 풀어도 괜찮았을듯

 

문제 풀이

  1. unordered_map을 통해 각 문자열에 해당하는 값을 짝지어 준다.
  2. 입력값을 각각 문자열로 받은 후 각 key 맞는 value를 가져와 정수형으로 치환해 준다.
  3. 첫번째 수를 10의 자리로, 두번째 수를 1의 자리로 받은 후 세번째 수를 10의 제곱으로 곱해준다.
  4. 완성된 수를 출력해 준다.

 

참고 사항

int형식으로 변수를 선언하여 틀렸습니다가 노출되었다 충분히 큰 수를 받을 수 있도록 long long 변수를 사용해 주자

 

 

정답 코드

#include <iostream>
#include <unordered_map>
#include <cmath>

using namespace std;

int main() {
	unordered_map<string, int> dic = {
		{"black", 0}, {"brown", 1}, {"red", 2},
		{"orange", 3}, {"yellow", 4}, {"green", 5},
		{"blue", 6}, {"violet", 7}, {"grey", 8}, {"white", 9}
	};
	string a, b, c;
	cin >> a >> b >> c;
	long long d = dic[a], e = dic[b], f = dic[c];
	cout << (d * 10 + e) * (long long)pow(10, f);
}

 

 

728x90