IT 프로그래밍/백준

[c++]백준 1076번 저항

기술1 2024. 5. 19. 17:00

 

 

문제 

링크 : https://www.acmicpc.net/problem/1076

코드

#include <iostream>
#include <string>
#include <cmath>
using namespace std;


int main()
{
	string color[10] = { "black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white" };
	string n;
	int mem[3];
	long long r = 0;

	for (int i = 0; i < 3; i++)
	{
		cin >> n;
		for (int j = 0; j < 10; j++)
		{
			if (color[j] == n)
			{
				mem[i] = j;
			}
		}
	}

	r += (mem[0] * 10);
	r += mem[1];
	r *= pow(10, mem[2]);

	cout << r << endl;

	return 0;
}

문제풀이

해당 식은 간단하게 문제를 따라서 풀면 나옵니다.

* 결과값이 int 범위를 넘어가기 때문에 r을 long long으로 뒀습니다.
* pow함수를 써야하기 때문에 #include <cmath>를 추가해주었습니다.

 

다른 풀이도 있겠지만 이렇게 쓰는 것이 가장 편리해 보입니다. 왜냐하면 string으로 저렇게 각 black, brown..을 묶어주면 해당 숫자에 해당하는 값 또한 각 순번과 동일하기 때문에 쉽게 문제를 풀 수 있기 때문입니다. 

 

그리고 각 저장된 수는 int mem[3]에 임의로 저장을 해줄 것이며 이후 mem[3]를 다 얻은 후에 r에 얻은 각각을 += and *= 해주면서 값을 구해주었습니다. 

'IT 프로그래밍 > 백준' 카테고리의 다른 글

[c++] 백준 2738번 : 행렬 덧셈  (0) 2024.05.21
[C++] 25206번 너의 평점은  (0) 2024.05.21
[C++] 백준 1094번 : 막대기  (0) 2024.05.19
C++ 백준 1075 나누기  (0) 2024.05.14
[C++] 백준 1316번 그룹 단어 체커  (0) 2024.04.07