https://swexpertacademy.com/main/main.do
SWEA 1244번
[숫자를 문자로 변환]
ch[i] = (char)(y+'0');
[문자 배열을 숫자로 변환]
Integer.parseInt(new String(ch));
숫자 2개를 자리 변경해주는 것이므로 for문 범위를 <맨 마지막 자리-1> 과 <맨 마지막 자리>로 해야 함
import java.util.Scanner;
public class P1244 {
static int n, c, ans;
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int t=1; t<=T; t++){
n = sc.nextInt();
c = sc.nextInt();
ans = 0;
char[] ch = Integer.toString(n).toCharArray();
dfs(c, 0, ch);
System.out.println("#"+t+" "+ans);
}
}
public static void dfs(int cnt, int start, char[] ch){
if(cnt == 0){
int cur = Integer.parseInt(new String(ch));
ans = Math.max(ans, cur);
return;
}
for(int i=start; i<ch.length-1; i++){
for(int j=i+1; j<ch.length; j++){
int x = Integer.parseInt(String.valueOf(ch[i]));
int y = Integer.parseInt(String.valueOf(ch[j]));
ch[i] = (char)(y+'0');
ch[j] = (char)(x+'0');
dfs(cnt-1, i, ch);
ch[i] = (char)(x+'0'); // 다시 원상복구
ch[j] = (char)(y+'0');
}
}
}
}
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA] 1216. [S/W 문제해결 기본] 3일차 - 회문2 (0) | 2022.11.10 |
---|---|
[SWEA] 2805. 농작물 수확하기 (0) | 2022.11.09 |
[SWEA] 1974. 스도쿠 검증 (0) | 2022.11.08 |
[SWEA] 1961. 숫자 배열 회전 (0) | 2022.11.08 |
[SWEA] 1954. 달팽이 숫자 (0) | 2022.11.07 |