From 58b6251261d7b6b361d187d3bd5837f89f73aced Mon Sep 17 00:00:00 2001 From: rl544 <111494264+rl544@users.noreply.github.com> Date: Mon, 2 Jan 2023 03:44:15 +0900 Subject: [PATCH] =?UTF-8?q?uploaded=20at=202023.=201.=202.=20=EC=98=A4?= =?UTF-8?q?=EC=A0=84=203:44:15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- programmers/혼자 놀기의 달인/solution.java | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 programmers/혼자 놀기의 달인/solution.java 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