-
[SWEA] 1244번 최대상금문제 풀이 2020. 4. 17. 21:34
1244 최대상금
풀이)
교환할 수 있는 모든 경우를 확인해서 최대값을 찾았다.
입력값을 int형으로 받아 자릿수대로 배열에 저장해놓고,
바꾼 다음 다시 원래대로 만들어 놓기 귀찮아서
아예 입력값을 string으로 받았다
string 입력값을 순서를 바꾼 뒤 stoi()함수를 통해 int형으로 바꿔 최대값인지 확인해줬다.
주의
값이 큰 수가 제일 앞에 있어야 하므로
자리를 바꿀 때, 뒤의 자리값이 클 경우에만 교환해줬다.
코드)
123456789101112131415161718192021222324252627282930313233343536373839404142#include <stdio.h>#include <iostream>#include <algorithm>#include <string>#include<string.h>using namespace std;string s;int n;int result;void dfs(int idx,int cnt) {if (cnt == n) {result = max(result, stoi(s));return;}if (idx >= s.length())return;for (int i = idx; i < s.length(); i++) {for (int j = i + 1; j < s.length(); j++) {if (s[i] <= s[j]) {swap(s[i], s[j]);dfs(i, cnt + 1);swap(s[i], s[j]);}}}}int main() {//freopen("input.txt", "r", stdin);int test_case=0;int T=0;scanf("%d", &T);for (test_case = 1; test_case <= T; test_case++) {cin >> s >> n;result = stoi(s);//printf("%d", s.length());dfs(0, 0);printf("#%d %d\n", test_case,result);}return 0;}cs 예를 들어 입력값이 78644 2이면
'문제 풀이' 카테고리의 다른 글
[SWEA] 3752번 가능한 시험 점수 (0) 2020.04.18 [SWEA] 1249번 보급로 (0) 2020.04.18 [SWEA] 1859번 백만 장자 프로젝트 (0) 2020.04.17 [백준] 5373번 큐빙 (0) 2020.04.15 [백준] 17143번 낚시왕 (0) 2020.04.14