diff --git a/백준/1715.py b/백준/1715.py new file mode 100644 index 0000000..78db907 --- /dev/null +++ b/백준/1715.py @@ -0,0 +1,32 @@ +import sys +import heapq + +sys.setrecursionlimit(10**6) + +input = sys.stdin.readline + +min_heap = [] + +N=int(input().rstrip()) + +for i in range(N): + heapq.heappush(min_heap, int(input().rstrip())) + +result = 0 + +first_value = heapq.heappop(min_heap) +result += first_value +while min_heap: + second_value = heapq.heappop(min_heap) + result+=second_value + if min_heap: + heapq.heappush(min_heap, first_value + second_value) + first_value=heapq.heappop(min_heap) + result += first_value + else: + break + +if(N==1): + result = 0 + +print(result) \ No newline at end of file diff --git a/백준/1722.py b/백준/1722.py new file mode 100644 index 0000000..5fd12c8 --- /dev/null +++ b/백준/1722.py @@ -0,0 +1,22 @@ +import sys +from itertools import permutations +import math + +N = int(input()) +problem = list(map(int, input().split())) #problem이 주어진 문제 + +a=[] +for i in range(1, N+1): + a.append(i) # a는 순서대로 순열 있는거 + +if problem[0] == 1: + print(*arr[problem[1]-1]) +elif problem[0] == 2: + for i in range(1, N+1): + new_arr.append(problem[i]) # new_arr가 배열만 저장되어 있는거 + temp = 1 + for i in arr: + if(list(i) == new_arr): + print(temp) + break + temp += 1 \ No newline at end of file diff --git a/백준/1744.py b/백준/1744.py new file mode 100644 index 0000000..0fa933a --- /dev/null +++ b/백준/1744.py @@ -0,0 +1,57 @@ +import heapq +import sys +from collections import deque + +input = sys.stdin.readline + +maxheap=[] +minheap=[] +result = 0 +count_0 = 0 +count_1 = 0 +N = int(input().rstrip()) + +def plusnum(num): + maxheap.append(num) + +def minusnum(num): + minheap.append(num) + +for i in range(N): + num = int(input().rstrip()) + if(num==0): + count_0 += 1 + elif(num==1): + count_1 += 1 + elif(num>0): + plusnum(num) + else: + minusnum(num) + +maxheap.sort() +minheap.sort() + +while maxheap: + first_value = maxheap.pop() + if maxheap: + second_value = maxheap.pop() + result += (first_value * second_value) + else: + result += first_value + +if (len(minheap)%2==1): + if count_0 and minheap: + minheap.pop() + else: + result+=minheap.pop() + +while minheap: + first_value = minheap.pop() + second_value = minheap.pop() + result += (first_value * second_value) + +result+=count_1 + +print(result) + + diff --git a/백준/1747.py b/백준/1747.py new file mode 100644 index 0000000..a1b35d8 --- /dev/null +++ b/백준/1747.py @@ -0,0 +1,29 @@ +import sys +import math + +input = sys.stdin.readline + +def pellindrom(num): + num = str(num) + num_len = len(num) // 2 + for i in range(num_len): + if(num[i]!=num[-(i+1)]): + return False + return True + +def isPrime(num): + if (num==1): + return False + for i in range(2, (int(math.sqrt(num))+1)): + if num%i == 0: + return False + return True + +N = int(input()) + +while True: + if (isPrime(N) and pellindrom(N)): + print(N) + break + else: + N+=1 diff --git a/백준/1753.py b/백준/1753.py new file mode 100644 index 0000000..7853ad4 --- /dev/null +++ b/백준/1753.py @@ -0,0 +1,34 @@ +import sys +input = sys.stdin.readline +from queue import PriorityQueue + +V, E = map(int, input().split()) +K = int(input()) +distance = [sys.maxsize] * (V+1) +visited = [False] * (V+1) +myList = [[] for _ in range(V+1)] +q = PriorityQueue() + +for _ in range(E): + u, v, w = map(int, input().split()) + myList[u].append((v, w)) + +q.put((0, K)) +distance[K] = 0 + +while q.qsize() > 0 : + current = q.get() + c_v = current[1] + if visited[c_v]: + continue + visited[c_v] = True + for next, value in myList[c_v]: + if distance[next] > distance[c_v] + value: + distance[next] = distance[c_v] + value + q.put((distance[next], next)) + +for i in range(1, V+1): + if visited[i]: + print(distance[i]) + else: + print("INF") \ No newline at end of file