728x90
반응형
문제 링크
https://www.acmicpc.net/problem/1076
문제 풀이 소스 코드
#include<iostream>
#include<stdio.h>
#include<map>
#include<string>
using namespace std;
int main(void) {
//map<string,int> res;
//res["black"] = 1;
//res["brown"] = 10;
//res["red"] = 100;
//res["orange"] = 1000;
//res["yellow"] = 10000;
//res["green"] = 100000;
//res["blue"] = 1000000;
//res["violet"] = 10000000;
//res["grey"] = 100000000;
//res["white"] = 1000000000;
map<string, int> res = {
{"black",0},
{"brown",1},
{"red",2},
{"orange",3},
{"yellow",4},
{"green",5},
{"blue",6},
{"violet",7},
{"grey",8},
{"white",9},
};
string s1, s2, s3;
long long ret=0;
int tenNumber = 10;
cin >> s1 >> s2 >> s3;
ret = res[s1] * 10 + res[s2];
int tenRet = 0;
for (int index = 0; index < res[s3]; index++) {
ret *= 10;
}
cout << ret << endl;
return 0;
}
풀이하는 법
- 각 색상 마다 숫자가 있음
- 색상의 숫자를 map자료구조로 담는다.
- map<string, int>res;
res["red"]=1;
위와 같은 경우라면,
int number = res["res"];
number가 1이되는 것을 이용한다. - 1, 2번 문자열의 경우
- 위와 같이 계산을 해주고
- //1번 문자열 s1
//2번 문자열 s2
res[s1]*10 + res[s2]; - 3번 문자열의 경우 나머지 10을 각 번호에 맞게 1번 ~9번을 곱해주면된다.
- for (int index = 0; index < res[s3]; index++) {
ret *= 10;
} - 풀이는 엄청 쉽다. map 함수를 안다면 더 쉽게 구현할 수 있음
알고 가기
- map 생성
- //1
map<string,int> res;
res["black"] = 0;
res["brown"] = 1;
res["red"] = 2;
res["orange"] = 3;
res["yellow"] = 4;
res["green"] = 5;
res["blue"] = 6;
res["violet"] = 7;
res["grey"] = 8;
res["white"] = 9;
//2
map<string, int> res = {
{"black",0},
{"brown",1},
{"red",2},
{"orange",3},
{"yellow",4},
{"green",5},
{"blue",6},
{"violet",7},
{"grey",8},
{"white",9},
}; - 두가지 방법으로 대입할 수 있음
728x90
반응형
'알고리즘 최종 (단계별) > 0.init' 카테고리의 다른 글
9935_문자열폭발 (0) | 2023.06.20 |
---|---|
1236_성지키기 (0) | 2023.06.16 |
1181_단어정렬 (0) | 2023.06.12 |
댓글