https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRUN9KfZ8DFAUo
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
import java.util.*;
import java.io.*;
public class Solution
{
static int T;
static int N,K;
static ArrayList<Character> numList;
static TreeSet<Integer> treeSet = new TreeSet<>();
static void run(){
int side = N/4; //한 변에 들어가는 문자 수
int rotate = side - 1; //회전 수
//초기 상태
getPass(side);
//rotate
for(int i=0;i<rotate;i++){
//제일 뒤에꺼빼서 제일 앞에 넣기
char move = numList.get(numList.size()-1);
numList.add(0,move);
numList.remove(numList.size()-1);
getPass(side);
}
}
static void getPass(int n){
for(int i=0;i<=numList.size()-n;i=i+n){
String tmp="";
for(int j=0;j<n;j++){
tmp+=numList.get(i+j);
}
treeSet.add(Integer.parseInt(tmp,16));
}
}
public static void main(String args[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
T = Integer.parseInt(br.readLine());
for(int i=1;i<=T;i++){
numList = new ArrayList<>();
treeSet = new TreeSet<>();
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
String tmp = br.readLine();
for(int j=0;j<N;j++){
numList.add(tmp.charAt(j));
}
run();
ArrayList<Integer> getAnswer = new ArrayList<>(treeSet);
Collections.sort(getAnswer, (o1,o2) -> o2 - o1); // 내림차순 정렬
System.out.println("#"+i+" "+getAnswer.get(K-1));
}
}
}
HEX to Integer
Integer.parseInt(String s, int n);
* n : 진수
ArrayList
ArrayList 원하는 인덱스에 원소 추가 가능, 추가 후 인덱스 하나씩 밀림.
삭제 후 인덱스 하나씩 당겨짐.
Set은 바로 정렬 X. List로 바꾸고 정렬해야함
'알고리즘' 카테고리의 다른 글
[SWEA] SWEA 2105 - 디저트 카페 (JAVA) (0) | 2023.04.07 |
---|---|
[SWEA] SWEA 5644 - 무선 충전 (JAVA) (0) | 2023.04.06 |
[PGS] 프로그래머스 - N개의 최소공배수 (JAVA) (0) | 2023.03.28 |
[BOJ] 12100번 : 2048(Easy) (JAVA) (0) | 2023.03.16 |
[SWEA] 1949. 등산로 조성 (JAVA) (0) | 2023.03.11 |