[SWEA] 5658. 보물상자 비밀번호 - Simulation
제출일 : 2019-09-03
Problem
link : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRUN9KfZ8DFAUo
Input
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 숫자의 개수 N과 크기 순서 K가 주어 진다.
그 다음 줄에는 16진수 0~F 숫자가 공백 없이 N개 주어진다.
Output
출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
Example
input
5
12 10
1B3B3B81F75E
16 2
F53586D76286B2D8
…
output
#1 503
#2 55541
#3 334454
#4 5667473
#5 182189737
Code
언어 : JAVA
메모리 : 30,296 kb
실행시간 : 130ms
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= T; tc++) {
System.out.print("#" + tc + " ");
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
int M = N / 4;
ArrayList<Character> list = new ArrayList<>();
String str = br.readLine();
for (int i = 0; i < N; i++) {
list.add(str.charAt(i));
}
ArrayList<String> numlist = new ArrayList<>();
str = "";
for (int i = 1; i <= N; i++) {
str += list.get(i - 1);
if (i % M == 0) {
if (!numlist.contains(str))
numlist.add(str);
str = "";
}
}
for (int i = 1; i <= M - 1; i++) {
char tmp = list.get(0);
list.remove(0);
list.add(tmp);
str = "";
for (int j = 1; j <= N; j++) {
str += list.get(j - 1);
if (j % M == 0) {
if (!numlist.contains(str))
numlist.add(str);
str = "";
}
}
}
Collections.sort(numlist, new Comparator<String>() { // 역정렬
@Override
public int compare(String o1, String o2) {
int x = Integer.parseInt(o1, 16);
int y = Integer.parseInt(o2, 16);
return y - x;
}
});
System.out.println(Integer.parseInt(numlist.get(K-1), 16));
} // end of TC
}// end of main
}
'Problem > SWEA' 카테고리의 다른 글
[SWEA] 2383. 점심 식사시간 - Simulation (0) | 2019.11.16 |
---|---|
[SWEA] 2117. 홈 방범 서비스 - Simulation (0) | 2019.11.12 |
[SWEA] 6109. 추억의 2048게임 D4 - Simulation (0) | 2019.11.03 |
[SWEA] 5431. 민석이의 과제 체크하기 D3 (0) | 2019.10.19 |
[SWEA] 1208. Flatten D3 (0) | 2019.10.19 |