https://leetcode.com/problems/orderly-queue/
문제를 보자마자 든 생각은 첫번째 예시인
s = acb, k =1는
왜 답이 abc가 되지 않는가 였다
생각해보니 k가 1일때는 하나씩 회전하기 때문에
하나씩 제일 앞 글자를 빼서 제일 뒤에 넣는 것을 반복한 후
비교하면 된다고 생각하였다.
그러면 k가 2 이상일 때는 모든 글자가 사전순인
최선의 결과를 얻을 수 있을 것이라 생각했고
올바른 접근이라 판단하고 문제를 풀었다.
sort, priorityQueue, Deque 모든 것을 다 사용해 보려고 노력 하였고
특히 반복문으로 쉽게 구현 할 수도 있지만
최대한 stream을 사용해서 간결하게 코드를 작성하고자 노력하였다.
stream 사용 예시 (String[] -> String)
answer = Arrays.asList(str).stream().collect(Collectors.joining());
Collectors 사용
List<String> result = sampleList .stream().collect(toList());
Set<String> result = sampleList.stream().collect(toSet());
List<String> lists = sampleList.stream().collect(toCollection(LinkedList::new));
Set<String> sets = sampleList.stream().collect(toCollection(TreeSet::new));
String result = sampleList.stream().collect(Collectors.joining());
String result = sampleList.stream().collect(Collectors.joining(" ","PRE-", "-POST"));// join응용
//result = "PRE-a bb ccc dddd a-POST"
Long result = sampleList.stream().collect(counting());
Double result = sampleList.stream().collect(averagingDouble(String::length));
Optional<String> result = sampleList.stream().collect(maxBy(Comparator.naturalOrder()));
Map<Integer, Set<String>> result = sampleList.stream()
.collect(groupingBy(String::length, toSet()));// 기준 함수, Collector
// result => {1=[a], 2=[bb], 3=[ccc], 4=[dddd]}
<정답>
import java.util.*;
import java.io.*;
class Solution {
public String orderlyQueue(String s, int k) {
String answer = "";
int length = s.length();
if(k == 1){
PriorityQueue<String> pq = new PriorityQueue<String>();
Deque<String> str = new LinkedList<String>(Arrays.asList(s.split("")));
for(int i = 0; i< length; i++){
str.add(str.poll());
pq.add(str.stream().collect(Collectors.joining()));
}
return pq.peek();
}else{
String[] str = s.split("");
Arrays.sort(str);
answer = Arrays.asList(str).stream().collect(Collectors.joining());
return answer;
}
}
}
'알고리즘 > java' 카테고리의 다른 글
<java> 전력망을 둘로 나누기 - tree, 완전 탐색 (0) | 2024.05.29 |
---|---|
<java> 모음사전, TreeSet (0) | 2024.05.28 |
<java> put marbles in bags (0) | 2024.05.26 |
<java> 프로그래머스 디스크 컨트롤러 : 우선순위 큐 (0) | 2024.05.24 |
<java> 프로그래머스 주식가격 (0) | 2024.05.23 |