-
5658. [모의 SW 역량테스트] 보물상자 비밀번호SWexpertAcademy 2019. 7. 15. 23:27
#include<iostream> #include<cstdio> #include<vector> #include<algorithm> using namespace std; int t; int n, k; int pick[28]; char a[28]; vector<int> result; int zegop(int x) { int r = 1; if (x == 0) return 1; for (int i = 0; i < x; i++) { r *= 16; } return r; }//제곱하는거, 최대 개수가 28개 -> 최대 자릿수 7개 -> 제곱 최대 6개 -> //그냥 편하게함 void vect(int n, int rotate, vector<int>& solv) { for (int i = 0; i < n; i += rotate) { int pp = i % rotate; int sum = 0; for (int j = i; j < i + rotate; j++) { int x = rotate - (j % rotate) - 1; sum += pick[j] * zegop(x); } solv.push_back(sum); } }//한바퀴 돌고 -> 한 변 값 제곱 * pic 곱해서 벡터에 저장하기 void trans(int n, int rotate) { char temp = a[n - 1]; for (int i = n - 1; i >= 1; i--) { a[i] = a[i - 1]; } a[0] = temp; for (int j = 0; j < n; j++) { if (a[j] == '1') pick[j] = 1; else if (a[j] == '2') pick[j] = 2; else if (a[j] == '3') pick[j] = 3; else if (a[j] == '4') pick[j] = 4; else if (a[j] == '5') pick[j] = 5; else if (a[j] == '6') pick[j] = 6; else if (a[j] == '7') pick[j] = 7; else if (a[j] == '8') pick[j] = 8; else if (a[j] == '9') pick[j] = 9; else if (a[j] == 'A') pick[j] = 10; else if (a[j] == 'B') pick[j] = 11; else if (a[j] == 'C') pick[j] = 12; else if (a[j] == 'D') pick[j] = 13; else if (a[j] == 'E') pick[j] = 14; else if (a[j] == 'F') pick[j] = 15; else if (a[j] == '0') pick[j] = 0; } }//16진수 수 변환하기 bool check(vector<int>& v, int c) { for (int i = 0; i < v.size(); i++) if (v[i] == c) return false; return true; }//다른벡터에 저장하기 전에, 중복 값 검사하기//크기가 최대 28 개정도라서 이렇게해도 //시간복잡도 적음 int main() { cin >> t; for (int xx = 1; xx <= t; xx++) { scanf("%d %d", &n, &k); for (int i = 0; i < n; i++) { scanf("%1s", &a[i]); } int rotate = n / 4; vector<int> solv; for (int i = 0; i < rotate; i++) { trans(n, rotate); vect(n, rotate, solv); } vector<int> rr; for (int i = 0; i < solv.size(); i++) { if (check(rr, solv[i]) == true) rr.push_back(solv[i]);//새로운 vector에 저장하기 } sort(rr.begin(), rr.end(), greater<int>());//역순 정렬 printf("#%d %d %d\n", xx, rr[k-1],rr.size() ); } return 0; }
오랜만에 이런 원초적이게 하려고하니까 조금오래걸렸다
'SWexpertAcademy' 카테고리의 다른 글
5644. [모의 SW 역량테스트] 무선 충전 (0) 2019.07.24 7699. 수지의 수지 맞는 여행 (0) 2019.07.20 1486. 장훈이의 높은 선반 (0) 2019.07.15 1221. [S/W 문제해결 기본] 5일차 - GNS (0) 2019.07.15 7733. 치즈 도둑 (0) 2019.07.14