코드굽는 타자기
SWEA[5658] - 보물상자 비밀번호 본문
링크
SWEA[5658]
문제설명
- 시뮬레이션
문제풀이
- StringBuilder, Integer.parseInt(String,radix), Sort 메서드를 사용할 줄 알면 편함.
- 회전횟수는 변의 길이만큼만 해도된다. 나머지는 다 중복임
문제코드
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Solution5658 {
public static void rotate(StringBuilder sb) {
char temp;
temp = sb.charAt(0);
sb.deleteCharAt(0);
sb.append(temp);
}
public static void main(String[] args) throws IOException {
System.setIn(new FileInputStream("res/swea/5658.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int T=Integer.parseInt(br.readLine());
for (int test_case = 1; test_case <= T; test_case++) {
int ans=0;
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
int len = N/4;
StringBuilder sb = new StringBuilder(br.readLine());
LinkedList<String> possible = new LinkedList<>();
int rot_num = Math.max(len, K);
for (int i = 0; i < rot_num; i++) {
rotate(sb);
for (int j = 0; j < 4; j++) {
String temp =sb.substring(len*j, len*j+len);
if(!possible.contains(temp)) {
possible.add(temp);
}
}
}
possible.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// TODO Auto-generated method stub
return Integer.parseInt(o1,16) - Integer.parseInt(o2,16);
}
});
ans = Integer.parseInt(possible.get(possible.size()-K),16);
System.out.println("#"+test_case+" "+ans);
/*
* 초기화
*/
}//end test_case
}//end main
}
아쉬운점
- 문제 제대로 안봄
- 1변씩 돌리는게아니라
- 1개씩 돌림...
- 16진법 10진법으로 변환 Integer.parseInt(String,radix) 메서드 안썼어서 찾는데 시간좀 걸렸음
- 메서드 너무 많이 써서그런지 날로먹은거같음
잘한점
- 16진법 10진법으로 변환 Integer.parseInt(String,radix) 메서드 사용
- Stringbuilder로 회전 구현
- 10진법 값을기준으로 Sort 구현
'알고리즘 > Simulation' 카테고리의 다른 글
Baekjoon[17135] - 캐슬 디펜스 (1) | 2020.02.25 |
---|---|
SWEA[2477] - 차량 정비소 (0) | 2020.02.22 |
SWEA[4013] - 특이한 자석 (0) | 2020.02.20 |
SWEA[5650] - 핀볼 게임 (0) | 2020.02.19 |
SWEA[5656] - 벽돌 깨기 (1) | 2020.02.19 |
Comments