반응형
리뷰
부분 문자열 생성과 문자열로 이루어진 16진수를 10진수로 변환하고, 정렬하는 문제
문제 풀이
- 각 테스트 케이스마다 정수 n, k값과 문자열 s를 받아와 준다.
- 정수형 벡터 lst를 초기화 하고, n번의 for문을 돌려준다.
- 문자열 s의 앞 부터 n을 4로 나눈 값 만큼의 부분의 부분 문자열을 생성하고 이를 10진수로 변환해 준다.
- 만약 lst 내에 해당 숫자가 없을 경우 lst에 추가해준다.
- 그리고 제일 앞쪽의 문자를 뒤쪽으로 옮긴 뒤 탐색을 계속 진행해 준다.
- for문이 종료되었을 경우 lst를 내림차순으로 정렬해 주고 k - 1 번째 인덱스의 수를 출력해 주면 된다.
참고 사항
stoi(temp, nullptr, 16);
문자열을 16진수로 인식하고 10진수로 변환하는 함수
정답 코드
#include<iostream>
#include<deque>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
int tc, n, k;
int main() {
cin >> tc;
for (int c = 1; c <= tc; c++) {
string s;
cin >> n >> k >> s;
vector<int> lst;
for (int i = 0; i < n; i++) {
string temp = s.substr(0, n / 4);
int convert = stoi(temp, nullptr, 16);
if (find(lst.begin(), lst.end(), convert) == lst.end()) lst.push_back(convert);
s = s.substr(1, n - 1) + s[0];
}
sort(lst.begin(), lst.end(), greater<int>());
cout << "#" << c << " " << lst[k - 1] << "\n";
}
}
728x90
반응형
'알고리즘 공부 > C++' 카테고리의 다른 글
SWEA 5650번 [모의 SW 역량테스트] 핀볼 게임 구현, 시뮬레이션 (0) | 2024.08.19 |
---|---|
백준 14888번 연산자 끼워넣기 C++ 백트래킹, 재귀 (0) | 2024.08.19 |
백준 2665번 미로만들기 C++ BFS, 최단 경로, 우선순위 큐 (0) | 2024.08.18 |
SWEA 1952번 [모의 SW 역량테스트] 수영장 C++ 백트래킹 (0) | 2024.08.18 |
SWEA 2115번 [모의 SW 역량테스트] 벌꿀채취 C++ 백트래킹, 완전 탐색 (0) | 2024.08.18 |