Skip to content

Commit 4a34287

Browse files
committed
[SWEA] 보물상자 비밀번호 / 1시간
1 parent 95cf355 commit 4a34287

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class Solution {
5+
6+
static int tc;
7+
static int n;
8+
static int k;
9+
static char snum[];
10+
static int answer = 0;
11+
static Integer nums[];
12+
13+
public static void main(String[] args) throws IOException {
14+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
15+
StringBuilder sb = new StringBuilder();
16+
17+
tc = Integer.parseInt(br.readLine());
18+
19+
for (int t = 1; t <= tc; t++) {
20+
sb.append("#").append(t).append(" ");
21+
22+
// 입력 받기
23+
StringTokenizer st = new StringTokenizer(br.readLine());
24+
n = Integer.parseInt(st.nextToken());
25+
k = Integer.parseInt(st.nextToken());
26+
snum = new char[n];
27+
snum = br.readLine().toCharArray();
28+
nums = new Integer[n];
29+
30+
// 숫자 회전하기
31+
for (int i = 0; i < n / 4; i++) {
32+
// System.out.println(Arrays.toString(snum));
33+
// 숫자 구하기
34+
makeNum(i, snum);
35+
char[] tmp = new char[n];
36+
for (int j = 0; j < n-1; j++) {
37+
tmp[j] = snum[j + 1];
38+
}
39+
tmp[n-1] = snum[0];
40+
snum = tmp;
41+
}
42+
Arrays.sort(nums, Collections.reverseOrder());
43+
// System.out.println(Arrays.toString(nums));
44+
45+
int pre = -1;
46+
int order = 0;
47+
for (int i = 0; i < n; i++) {
48+
if (nums[i] == pre) {
49+
pre = nums[i];
50+
continue;
51+
}
52+
order++;
53+
if (order == k) {
54+
answer = nums[i];
55+
break;
56+
}
57+
pre = nums[i];
58+
}
59+
60+
sb.append(answer).append('\n');
61+
}
62+
63+
System.out.println(sb);
64+
65+
}
66+
67+
static void makeNum(int order, char[] snum) {
68+
// 숫자 변환
69+
for (int i = 0; i < 4; i++) {
70+
StringBuilder tmp = new StringBuilder();
71+
int start = i * n / 4;
72+
int end = i * n / 4 + n / 4;
73+
for (int c = start; c < end; c++) {
74+
tmp.append(snum[c]);
75+
}
76+
77+
// 십진수로 변환
78+
int num = 0;
79+
for (int j = 0; j < n / 4; j++) {
80+
char cur = tmp.charAt(n / 4 - 1 - j);
81+
if ('0' <= cur && cur <= '9')
82+
num += ((cur - '0') * Math.pow(16, j));
83+
else
84+
num += ((10 + (cur - 'A')) * Math.pow(16, j));
85+
// System.out.println(num);
86+
}
87+
nums[order * 4 + i] = num;
88+
}
89+
}
90+
}

0 commit comments

Comments
 (0)