일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- programmers
- Spring JPA
- SECS/GEM
- 자바
- c
- C++
- modern c++
- 프로그래머스
- MYSQL
- Spring
- Spotify Api
- linux
- SECS-II
- 회원가입
- 회귀
- Baekjoon
- Computer Science
- CS
- spring boot
- 파이썬
- 백준
- regression
- SW Expert Academy
- SECS
- java
- Gem
- spotify
- python
- 스포티파이
- SWEA
Archives
- Today
- Total
비버놀로지
[SWEA SW Expert Academy] 5658 보물상자 비밀번호 본문
728x90
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRUN9KfZ8DFAUo
우선순위큐를 이용해서 나열해 주고, 16진수를 10진수로 변환해서 출력을 해주는 방식이다.
package com.ssafy.study;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Scanner;
public class SWEA_5658_보물상자비밀번호 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int t = 1; t <= T; t++) {
int N = sc.nextInt();
int K = sc.nextInt();
char[] arr = sc.next().toCharArray();
LinkedList<Character> que = new LinkedList<>();
for (int i = 0; i < arr.length; i++) {
que.add(arr[i]);
}
PriorityQueue<Integer> resultque = new PriorityQueue<Integer>();
for (int k = 0; k < N / 4; k++) { //중복되기 전까지 회전해 준다.
for (int i = 0; i < 4; i++) { //4방향을 체크해 준다.
int temp = 0;
for (int j = i * N / 4; j < (i + 1) * N / 4; j++) { //한 방향의 숫자들을 10진수로 변환해 저장해준다.
if (que.get(j) >= 'A') {
temp += (que.get(j) - 'A' + 10) * Math.pow(16, (N / 4 - j % (N / 4)) - 1);
} else {
temp += (que.get(j) - '0') * Math.pow(16, (N / 4 - j % (N / 4)) - 1);
}
}
if (!resultque.contains(temp)) {
resultque.add(temp); //각 변을 10진수로 변환해 큐에 넣어주고, 중복은 제외한다.
}
}
que.addFirst(que.pollLast()); //마지막 숫자를 첫번째로 넣어 회전을 시켜준다.
}
int size = resultque.size();
int result[] = new int[size];
for (int i = size - 1; i >= 0; i--) {
result[i] = resultque.poll(); //배열에 높은 숫자순서대로 넣어준다.
}
System.out.println("#" + t + " " + result[K - 1]); //해당하는 위치의 값은 출력한다.
}
}
}
728x90
'ALGORITM > JAVA' 카테고리의 다른 글
[Programmers 프로그래머스] 68644 두 개 뽑아서 더하기 (JAVA) (0) | 2021.01.06 |
---|---|
[Programmers 프로그래머스] 64061 크레인 인형뽑기 게임 (0) | 2021.01.06 |
[SWEA SW Expert Academy] 1249 보급로 (0) | 2020.12.01 |
[SWEA SW Expert Academy] 4013 특이한 자석 (0) | 2020.12.01 |
[BAEKJOON 백준] 17406 배열돌리기 4 (0) | 2020.08.31 |
Comments