Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- JavaScript
- ADT
- 코테
- M1W
- 긱바
- 노트북램교체
- 삼성노트북하판
- 어도비
- 시간복잡도
- 몬스긱
- LinkedList
- 코딩공부
- 자바스크립트
- 코테준비
- 백준
- Unity
- GMK67
- 코드잇TIL
- 오늘도코드잇
- 브론즈
- 삼성노트북
- 노트북SSD교체
- 코드잇
- JS
- 스톡
- 자료구조
- solved.ac
- 기계식키보드
- 추상적 자료형
- unityC#
Archives
- Today
- Total
SKYLIGHT STUDIO
[C++/1076] 저항 본문
전자 제품에는 저항이 들어간다. 저항은 색 3개를 이용해서 그 저항이 몇 옴인지 나타낸다. 처음 색 2개는 저항의 값이고, 마지막 색은 곱해야 하는 값이다. 저항의 값은 다음 표를 이용해서 구한다.
예를 들어, 저항의 색이 yellow, violet, red였다면 저항의 값은 4,700이 된다. 입력첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 위의 표에 있는 색만 입력으로 주어진다.
출력입력으로 주어진 저항의 저항값을 계산하여 첫째 줄에 출력한다.
|
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이 된다
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
string s1;
string s2;
string s3;
long long Resistance(string s, int index) {
if (s == "black") {
if (index == 3) {
return 1;
}
else {
return 0;
}
}
if (s == "brown") {
if (index == 3) {
return 10;
}
else {
return (index < 2) ? 1 * 10 : 1;
}
}
if (s == "red") {
if (index == 3) {
return 100;
}
else {
return (index < 2) ? 2 * 10 : 2;
}
}
if (s == "orange") {
if (index == 3) {
return 1000;
}
else {
return (index < 2) ? 3 * 10 : 3;
}
}
if (s == "yellow") {
if (index == 3) {
return 10000;
}
else {
return (index < 2) ? 4 * 10 : 4;
}
}
if (s == "green") {
if (index == 3) {
return 100000;
}
else {
return (index < 2) ? 5 * 10 : 5;
}
}
if (s == "blue") {
if (index == 3) {
return 1000000;
}
else {
return (index < 2) ? 6 * 10 : 6;
}
}
if (s == "violet") {
if (index == 3) {
return 10000000;
}
else {
return (index < 2) ? 7 * 10 : 7;
}
}
if (s == "grey") {
if (index == 3) {
return 100000000;
}
else {
return (index < 2) ? 8 * 10 : 8;
}
}
if (s == "white") {
if (index == 3) {
return 1000000000;
}
else {
return (index < 2) ? 9 * 10 : 9;
}
}
}
int main()
{
cin >> s1;
cin >> s2;
cin >> s3;
cout << (Resistance(s1, 1) + Resistance(s2, 2)) * Resistance(s3, 3);
}
String 말고 순서를 의미하는 인덱스를 인자로 하나 더 받아오면 되는 방식이다.
암만 생각해도 이렇게 비효율적으로 푸는 게 아닌 것 같은데...
다른 방식으로는 해쉬코드도 있다던데, 한번 찾아봐야지.
'Computer Programming > Coding Test(C++)' 카테고리의 다른 글
[C++ 리바이브] Map (2) | 2024.10.30 |
---|---|
[C++][1773] 폭죽쇼 (1) | 2024.10.08 |
[C++][2547] 사탕 선생 고창영 (1) | 2024.10.02 |
[C++ 리바이브] C++ 동적 배열 (0) | 2024.10.02 |
[C++][1267] 핸드폰 요금 (0) | 2024.10.01 |