[백준 1422] 숫자의 신
문제 요약 입력으로 K개의 숫자가 주어진다. 이때 각 숫자의 범위는 1,000,000,000보다 작거나 같은 자연수이다. 이때 주어진 숫자들을 골라 앞, 뒤로 붙여서 만들 수 있는 숫자 중 가장 큰 숫자는 무
ddae9.tistory.com
https://www.acmicpc.net/board/view/73749
글 읽기 - 17프로에서 못 넘어갔던 반례 한 가지 공유드립니다.
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
https://www.acmicpc.net/board/view/67602
글 읽기 - 반례 알려드립니다
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
https://www.acmicpc.net/board/view/61792
글 읽기 - 반례 참고하세요
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String arg[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int K = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
String[] arr = new String[K];
int max = 0;
for(int i = 0; i < K; i++) {
st = new StringTokenizer(br.readLine());
arr[i] = st.nextToken();
int sn = Integer.parseInt(arr[i]);
max = Math.max(max, sn);
}
int remain = N-K;
for(int i = 1; i < K; i++) {
for(int j = 0; j < K-i; j++) {
String o1 = arr[j] + arr[j+1];
String o2 = arr[j+1] + arr[j];
BigInteger b1 = new BigInteger(o1);
BigInteger b2 = new BigInteger(o2);
int a = b1.compareTo(b2);
if(a == -1) {
String temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
//System.out.println(Arrays.toString(arr));
String result = "";
for(int i = 0; i < K; i++) {
int a = Integer.parseInt(arr[i]);
if(a == max) {
for(int j = 0; j < remain; j++) {
result += arr[i];
}
max = -1;
}
result += arr[i];
}
System.out.println(result);
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main {
public static void main(String arg[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int K = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
String[] arr = new String[K];
int max = 0;
for(int i = 0; i < K; i++) {
st = new StringTokenizer(br.readLine());
arr[i] = st.nextToken();
int sn = Integer.parseInt(arr[i]);
max = Math.max(max, sn);
}
int remain = N-K;
Arrays.sort(arr, new Comparator<String>() {
public int compare(String o1, String o2) {
String o = o1+o2;
return -o.compareTo(o2+o1);
}
});
String result = "";
for(int i = 0; i < K; i++) {
if(max == Integer.parseInt(arr[i])) {
while(remain --> 0) {
result += arr[i];
}
max = -1;
}
result += arr[i];
}
System.out.println(result);
}
}
'백준' 카테고리의 다른 글
[백준] 2585 경비행기 [자바] (0) | 2022.01.19 |
---|---|
[백준] 1939 중량제한 [자바] (0) | 2022.01.17 |
[백준] 1826 연료 채우기 [자바] (0) | 2022.01.13 |
[백준] 1202 보석 도둑 [자바] (0) | 2022.01.09 |
[백준] 1655 가운데를 말해요 [자바] (0) | 2022.01.07 |