하루에 한 문제
[모의 SW 역량테스트] 보물상자 비밀번호 -Java 본문
package SW_Expert_Academy;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
public class 보물상자비밀번호 {
static int N,K;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T=Integer.parseInt(br.readLine());
for(int tc=1; tc<=T; tc++) {
StringTokenizer st= new StringTokenizer(br.readLine());
N=Integer.parseInt(st.nextToken());
K=Integer.parseInt(st.nextToken());
Set <String> set = new HashSet<>();
String number=br.readLine();
int size=N/4;
for(int i=0; i<size; i++) { //회전 수
int begin=0;
int end=size;
for(int j=0; j<4; j++) { //잘라내는 숫자
//System.out.println(number.substring(begin, end));
set.add(number.substring(begin, end));
begin+=size;
end+=size;
}
//number 오른쪽으로 한칸씩 이동
number=number.substring(number.length()-1,number.length())+number.substring(0,number.length()-1);
}
List<String> list = new ArrayList<>(set);
Collections.sort(list, Collections.reverseOrder());
sb.append("#"+tc+" "+Integer.parseInt(list.get(K-1),16)+"\n");
}
System.out.println(sb);
}
}
소요시간 : 30분
예전에 풀었을 때는 number를 배열로 만들어서... 하나하나씩 배열인덱스를 옮겨가면서 풀어서 시간이 좀 오래 걸렸는데 이제는 String다루는 실력이 많이 늘어서 금방풀었습니다!
로직을 살펴보면
1. 회전
회전의 수는 정해져있습니다. 만약 number의 길이가 12라면
4개의 변에 각각 3개의 숫자가 들어갑니다. (12/4=3)
즉 한변의 숫자가 3개니까 3회전을 하면 원래와 같아진다는 소리입니다.
-> N/4 = 회전의 수
회전을 할 때는 substring을 이용해서 만들어주었습니다.
2. 숫자 잘라내기
숫자를 잘라낼때는 총 변의 수가 4이기 떄문에 4번 for문을 돌아줍니다.
그리고 그 안에서 또다시 substring을 통해 잘라줍니다.
이렇게 자른 숫자를 set안에 넣어서 중복체크를 해줍니다.
이렇게 하고 난 뒤 , set을 list로 바꿔주고 list를 정렬해서 K-1번째 값을 뽑아서 16진수로 변환시켜주면 끝입니다!
'알고리즘 > SW Expert Academy' 카테고리의 다른 글
[모의 SW 역량테스트] 숫자 만들기 -Java (0) | 2021.01.06 |
---|---|
[모의 SW 역량테스트] 요리사 -Java (0) | 2021.01.05 |
[모의 SW 역량테스트] 줄기세포배양 -Java (0) | 2021.01.05 |
[모의 SW 역량테스트] 무선 충전 -Java (1) | 2021.01.03 |
[모의 SW 역량테스트] 핀볼 게임 -Java (1) | 2020.12.30 |
Comments