diff --git a/programmers/혼자 놀기의 달인/solution.java b/programmers/혼자 놀기의 달인/solution.java new file mode 100644 index 0000000..5593002 --- /dev/null +++ b/programmers/혼자 놀기의 달인/solution.java @@ -0,0 +1,28 @@ +// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/131130 + +import java.util.*; +import java.util.stream.*; +class Solution { + public int solution(int[] cards) { + int answer = 0, first = 0, temp = 0; + HashMap hm = new HashMap<>(); + PriorityQueue pq = new PriorityQueue<>((a,b) -> b - a), ar = new PriorityQueue<>(Arrays.stream(cards).boxed().collect(Collectors.toList())); + while(ar.size()>0){ + int fc = 0; + if(!hm.getOrDefault(ar.peek(),false)) { + temp = ar.peek(); + while(ar.size()>0){ + if(!hm.getOrDefault(temp,false)) { + hm.put(temp,true); + ar.remove(temp); + fc++; + } + else break; + temp = cards[temp-1]; + } + pq.add(fc); + } else break; + } + return (pq.size()<2)?0:pq.poll()*pq.poll(); + } +} \ No newline at end of file