728x90
반응형
문제 출처 :
문제 풀이 :
- python 풀이와 같은 방식으로 풀었다.
- 다만 C++의 경우 vector가 아무리 편하더라도 idx를 찾고 값을 지워주고 하는 등의 코딩이 무척 C++스럽다고 생각되었다.(사실 아직 C++ 스럽다는게 어떤느낌인지 잘 모른다)
- C++로 코딩을 한지 얼마 안되어서 아직은 너무 낯설게 느껴져서 더 많이 헤멘 듯 하다.
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
void vector_2d_print(vector <vector<int>> vec)
{
cout << "\n";
for (int i = 0; i < vec.size(); i++)
{
for (int j = 0; j < vec[i].size(); j++)
{
cout << vec[i][j] << " ";
}
cout << "\n";
}
}
void vector_1d_print(vector <int> vec)
{
cout << "\n";
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i] << " ";
}
cout << "\n";
}
int main()
{
int max_num = 0;
int dice_num = 0;
vector <vector<int>> dices;
cin >> dice_num;
int tmp = 0;
for (int i = 0; i < dice_num; i++)
{
vector <int> temp = {};
for (int j = 0; j < 6; j++)
{
cin >> tmp;
temp.push_back(tmp);
}
dices.push_back(temp);
}
map<int, int> down_up_plane;
down_up_plane[0] = 5;
down_up_plane[1] = 3;
down_up_plane[2] = 4;
down_up_plane[3] = 1;
down_up_plane[4] = 2;
down_up_plane[5] = 0;
int condition = false;
for (int i = 0; i < 6; i++)
{
//첫번째 주사위 의 밑면 = i
vector <int> tmp = { 1,2,3,4,5,6 };
int res = 0;
tmp.erase(std::remove(tmp.begin(), tmp.end(), dices[0][i]), tmp.end());
tmp.erase(std::remove(tmp.begin(), tmp.end(), dices[0][down_up_plane[i]]), tmp.end());
res += *max_element(tmp.begin(), tmp.end());
std::vector<int>::iterator it = std::find(dices[1].begin(), dices[1].end(), dices[0][down_up_plane[i]]);
int next_down_idx = std::distance(dices[1].begin(), it);
for (int j = 1; j < dice_num; j++)
{
vector <int> tmp = { 1,2,3,4,5,6 };
tmp.erase(std::remove(tmp.begin(), tmp.end(), dices[j][next_down_idx]), tmp.end());
tmp.erase(std::remove(tmp.begin(), tmp.end(), dices[j][down_up_plane[next_down_idx]]), tmp.end());
res += *max_element(tmp.begin(), tmp.end());
if (j < dice_num - 1)
{
std::vector<int>::iterator it = std::find(dices[j + 1].begin(), dices[j + 1].end(), dices[j][down_up_plane[next_down_idx]]);
next_down_idx = std::distance(dices[j + 1].begin(), it);
}
}
if (res >= max_num)
{
max_num = res;
}
}
cout << max_num << endl;
return 0;
}
반응형
'Computer Science > Algorithm' 카테고리의 다른 글
[백준] 20437 - 문자열 게임2 (Python) (0) | 2020.12.29 |
---|---|
[종만북] 소풍(PICNIC) - 미완 (0) | 2020.12.29 |
[백준] 2116 - 주사위 쌓기(Python) (0) | 2020.12.28 |
[백준] 20057 - 마법사 상어와 토네이도(Python) (0) | 2020.12.07 |
[백준] 20056 - 마법사 상어와 파이어볼(Python) (0) | 2020.10.29 |