-
[백준][Kotlin]1744번 수 묶기백준 2023. 3. 21. 15:54728x90
해당 문제는 첫번째로 우선순위큐를 2개 생성한 뒤 0이하 수들과 1이상 수들로 나누어 저장 합니다.
두번째로는 각 큐 내 자료를 꺼내오면서 두개를 곱한값과 더한 값 중 더욱 큰 수를 변수에 더하면서 저장한 뒤에
출력하면 됩니다.
하기는 제가 작성한 코드와 제출 결과 입니다.
import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.util.* fun main() { val br = BufferedReader(InputStreamReader(System.`in`)) //var bw = BufferedWriter(OutputStreamWriter(System.out)) var st = StringTokenizer(br.readLine()) val N = st.nextToken().toInt() var pq = PriorityQueue<Int>(kotlin.Comparator { o1, o2 -> o2.compareTo(o1)}) var pq2 = PriorityQueue<Int>() repeat(N){ st = StringTokenizer(br.readLine()) var value = st.nextToken().toInt() if(value <= 0){ pq2.add(value) } else { pq.add(value) } } var sum = 0 while (pq.size > 1){ var temp1 = pq.poll() var temp2 = pq.poll() if(temp1*temp2 > temp1+temp2){ sum += temp1*temp2 continue } sum += temp1+temp2 } while(!pq.isEmpty()){ sum += pq.poll() } while (pq2.size > 1){ var temp1 = pq2.poll() var temp2 = pq2.poll() if(temp1*temp2 > temp1+temp2){ sum += temp1*temp2 continue } sum += temp1+temp2 } while(!pq2.isEmpty()){ sum += pq2.poll() } println(sum) //bw.flush() //bw.close() }
'백준' 카테고리의 다른 글
[백준][Kotlin]1541번 잃어버린 괄호 (0) 2023.03.21 [백준][Kotlin]1931번 회의실 배정 (0) 2023.03.21 [백준][Kotlin]1715번 카드 정렬하기 (0) 2023.03.21 [백준][Kotlin]11047번 문제 동전 0 (0) 2023.03.20 [백준][Kotlin]1300번 K번째 수 (0) 2023.03.20