반응형
[광고 누르면 오늘의 행운 상승!!]
자바 API를 얼마나 잘 알고있냐 를 테스트하는 문제
풀이 1.
1. N/4만큼의 영역을 16진수로 변환한다.
2. 변환한 값이 리스트에 없다면(중복제거) 리스트에 추가한다.
3. 다음 영역으로 이동한다
4. 리스트를 정렬시킨다.
5. K번째 수를 구한다.
package Study5;
import java.io.*;
import java.util.*;
public class 보물상자비밀번호 {
static int T,K,N;
public static void main(String[] args) throws Exception {
System.setIn(new FileInputStream("test.txt"));
Scanner sc = new Scanner(System.in);
T = sc.nextInt();
for (int tc = 1; tc <= T; tc++) {
int N = sc.nextInt(); // 4의 배수, 8<=N<=28
int K = sc.nextInt(); // K번째 큰 수
String s = sc.next();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < N/4; i++) {
int start = 0;
int end = N/4;
for (int j = 0; j < 4; j++) {
String hex = s.substring(start, end);
int num = Integer.parseInt(hex,16);
if(!list.contains(num))list.add(num);
start = end;
end += N/4;
}
char c = s.charAt(N-1);
s = c+s.substring(0,N-1);
}
Collections.sort(list);
System.out.println("#" + tc + " " + list.get(list.size()-K));
}
sc.close();
}
}
풀이 2.
값은 N/4만큼 순환되기에 입력값에 N/4-1을 더해서 코드 길이를 줄인다.
1. 입력값에 N/4-1를 더한다.
2. 16진수로 변환하여 저장한다.
3. 리스트에 값이 없다면(중복제거) 리스트에 추가한다.
4. 거꾸로 정렬시킨다.
5. K번째를 출력한다.
package Study5;
import java.io.*;
import java.util.*;
public class 보물상자비밀번호2 {
static int T,K,N;
public static void main(String[] args) throws Exception {
System.setIn(new FileInputStream("test.txt"));
Scanner sc = new Scanner(System.in);
T = sc.nextInt();
for (int tc = 1; tc <= T; tc++) {
int N = sc.nextInt(); // 4의 배수, 8<=N<=28
int K = sc.nextInt(); // K번째 큰 수
String s = sc.next();
String t = s+s.substring(0, N/4-1);
List<Integer> list = new ArrayList<>();
for (int i = 0; i < N; i++) {
String hex = t.substring(i, i+N/4);
int num = Integer.parseInt(hex,16);
if(!list.contains(num))list.add(num);
}
Collections.sort(list ,Collections.reverseOrder());
System.out.println("#" + tc + " " + list.get(K-1));
}
sc.close();
}
}
반응형
'2. 알고리즘사이트 > 2. Swea' 카테고리의 다른 글
정식이의 은행업무 [SWEA 4366][JAVA][D4][String] (0) | 2020.05.01 |
---|---|
등산로 조성 [SWEA 1949][JAVA][모의 SW역량 테스트][DFS] (0) | 2020.05.01 |
추억의 2048게임 [SWEA 6109][JAVA][Dequeue] (0) | 2020.04.29 |
재관이의 대량 할인 [SWEA 4050][JAVA] (0) | 2020.04.29 |
프로세서연결하기 [SWEA 1767][JAVA][SW Test 샘플문제] (0) | 2020.04.27 |