리뷰
unordered_map과 pow를 통해 푼 문제, C++로 문제를 풀며 처음으로 int값을 초과하는 문제였다, 문자열로 풀어도 괜찮았을듯
문제 풀이
- unordered_map을 통해 각 문자열에 해당하는 값을 짝지어 준다.
- 입력값을 각각 문자열로 받은 후 각 key 맞는 value를 가져와 정수형으로 치환해 준다.
- 첫번째 수를 10의 자리로, 두번째 수를 1의 자리로 받은 후 세번째 수를 10의 제곱으로 곱해준다.
- 완성된 수를 출력해 준다.
참고 사항
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
'알고리즘 공부 > C++' 카테고리의 다른 글
백준 1940번 주몽 C++ 투 포인터 (4) | 2024.07.22 |
---|---|
백준 1159번 농구 경기 C++ (0) | 2024.07.21 |
백준 11091번 알파벳 전부 쓰기 C++ (0) | 2024.07.21 |
백준 11023번 더하기 3 C++ (0) | 2024.07.21 |
백준 10822번 더하기 C++ (0) | 2024.07.21 |