728x90
반응형
9자리 이하의 음이 아닌 정수 N이 있다. 당신은 이 수에서 한 쌍의 숫자를 골라 그 위치를 바꾸는 일을 최대 한 번 하여(안 하거나, 한 번만 하여) 새로운 수 M을 만들 수 있다. 단, 바꾼 결과 M의 맨 앞에 ‘0’이 나타나면 안 된다.
M의 최솟값과 최댓값을 구하는 프로그램을 작성하라.
[입력]
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스는 하나의 줄로 이루어진다. 각 줄에는 0 이상 999,999,999 이하의 정수 N이 주어진다. N ≠ 0 이라면 주어지는 수가 0으로 시작하지 않는다.
[출력]
각 테스트 케이스마다, M의 최솟값과 최댓값을 공백 하나를 사이로 두고 출력한다.
입력
4 12345 54321 142857 10000 |
출력
#1 12345 52341 #2 14325 54321 #3 124857 842157 #4 10000 10000 |
import java.util.*;
public class Solution {
public int[] solution(int n) {
String str = Integer.toString(n);
int[] answer = new int[2];
answer[0] = n;
answer[1] = n;
for (int p1=0; p1 < str.length(); p1++) {
for (int p2=1; p2 < str.length(); p2++) {
StringBuilder sb = new StringBuilder();
sb.append(str);
String tmp2 = " ";
if (sb.charAt(p2) == '0' && p1==0) {
continue;
}
else {
if (p1 != p2) {
tmp2 = String.valueOf(sb.charAt(p1));
sb.replace(p1, p1 + 1, String.valueOf(sb.charAt(p2)));
sb.replace(p2, p2 + 1, String.valueOf(tmp2));
}
}
answer[0] = Math.min(answer[0], Integer.parseInt(sb.toString()));
answer[1] = Math.max(answer[1], Integer.parseInt(sb.toString()));
}
}
return answer;
}
public static void main(String[] args) {
Solution T = new Solution();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = kb.nextInt();
}
for (int i = 0; i < arr.length; i++) {
int i2 = i + 1;
System.out.print("#" + i2 + " ");
for (int x : T.solution(arr[i])){
System.out.print(x + " ");
}
System.out.println();
}
}
}
728x90
반응형
'Java > Java 알고리즘 SWEA' 카테고리의 다른 글
[SW 아카데미] 1209. [S/W 문제해결 기본] 2일차 - Sum (0) | 2022.05.24 |
---|---|
[SW아카데미] 1208. [S/W 문제해결 기본] 1일차 - Flatten (0) | 2022.05.24 |
[SW 아카데미] 1206. [S/W 문제해결 기본] 1일차 - View (0) | 2022.05.24 |
[SW 아카데미] 13218. 조별과제 (0) | 2022.05.24 |
[SW 아카데미] 13229. 일요일 (0) | 2022.05.24 |