Baekjoon Online Judge
문제
전자 제품에는 저항이 들어간다. 저항은 색 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이 된다.
입력
첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 위의 표에 있는 색만 입력으로 주어진다.
출력
입력으로 주어진 저항의 저항값을 계산하여 첫째 줄에 출력한다.
예제 입력 | 예제 출력 |
yellow violet red |
4700 |
orange red blue |
32000000 |
white white white |
99000000000 |
풀이
#include <iostream>
#include <cmath>
using namespace std;
// 저항의 색
string color[10] = { "black", "brown", "red", "orange", "yellow",
"green", "blue", "violet", "grey", "white" };
int main() {
int sum = 0; // 저항의 값
for (int i = 0; i < 3; i++) {
// 입력
string c;
cin >> c;
// 입력한 색이 color[]의 몇 번 인덱스에 해당하는 지 찾기
int j = 0;
for (j; j < 10; j++)
if (c == color[j]) break;
// 저항의 값 계산
if (i <= 1)
sum += (j * pow(10, 1 - i));
else { // 출력
cout << sum;
if (sum > 0) {
for (int k = 0; k < j; k++)
cout << "0";
}
}
}
return 0;
}
위의 문제는 ((첫번째 값 * 10) + 두번째 값) * 세번째 곱을 구하는 문제이다.
표에 입력된 색의 이름을 순서대로 color[]에 저장한 뒤 각 색들의 인덱스 번호를 이용했다. 첫번째와 두번째 색에 해당되는 값은 sum += (j * pow(10, 1 - i));을 이용해서 더했으며, 마지막 색은 해당 색의 인덱스 번호만큼 반복문으로 0을 출력했다.
'백준 > C++' 카테고리의 다른 글
[Baekjoon/C++] 적어도 대부분의 배수 1145번 (0) | 2022.04.21 |
---|---|
[Baekjoon/C++] 하얀 칸 1100번 (0) | 2022.04.21 |
[Baekjoon/C++] 나누기 1075번 (0) | 2022.04.21 |
[Baekjoon/C++] 명령 프롬프트 1032번 (0) | 2022.04.21 |
[Baekjoon/C++] 분산처리 1009번 (0) | 2022.04.21 |