diff --git "a/\354\235\264\355\213\260\354\247\200\354\234\244/11279_\354\265\234\353\214\200 \355\236\231.py" "b/\354\235\264\355\213\260\354\247\200\354\234\244/11279_\354\265\234\353\214\200 \355\236\231.py" new file mode 100644 index 0000000..6bc8506 --- /dev/null +++ "b/\354\235\264\355\213\260\354\247\200\354\234\244/11279_\354\265\234\353\214\200 \355\236\231.py" @@ -0,0 +1,17 @@ +# for문 안의 num = int(input()) # 이 방법 시간초과=> 반복문으로 여러 줄 받을 때 input()은 시간초과 발생 + +import heapq, sys + +heap = [] +n = int(input()) + +for i in range(n): + num = int(sys.stdin.readline()) # 한 줄 입력 받아 정수형으로 형변환 + if num == 0: # 0 입력되면 + if heap: # 힙에 요소 있을 때 가장 큰 값 첫번째 루트 노드 삭제 + print(heapq.heappop(heap)[1]) + else:# 비어있을 때 0 출력 + print(0) + else: # 자연수 입력되면 + heapq.heappush(heap, (-num, num)) # (우선순위, 값) + diff --git "a/\354\235\264\355\213\260\354\247\200\354\234\244/11650_\354\242\214\355\221\234 \354\240\225\353\240\254\355\225\230\352\270\260.py" "b/\354\235\264\355\213\260\354\247\200\354\234\244/11650_\354\242\214\355\221\234 \354\240\225\353\240\254\355\225\230\352\270\260.py" new file mode 100644 index 0000000..92f9228 --- /dev/null +++ "b/\354\235\264\355\213\260\354\247\200\354\234\244/11650_\354\242\214\355\221\234 \354\240\225\353\240\254\355\225\230\352\270\260.py" @@ -0,0 +1,42 @@ +import sys +input = sys.stdin.readline + +n = int(input()) # 입력할 좌표 수 : 2차원 배열의 크기 + +def merge_sort(arr): + if len(arr) < 2: + return arr + mid = len(arr) // 2 + left = merge_sort(arr[:mid]) + right = merge_sort(arr[mid:]) + merged_arr = [] + l = r = 0 + + while l < len(left) and r < len(right): + # x 좌표가 같을 경우 : y좌표를 비교해서 작은 값 리스트에 넣기 + #[][0] : x좌표, [][1] : y좌표인 2차원 배열 + if left[l][0] == right[r][0]: + if left[l][1] < right[r][1]: + merged_arr.append(left[l]) + l += 1 + else: + merged_arr.append(right[r]) + r += 1 + elif left[l][0] < right[r][0]: + merged_arr.append(left[l]) + l += 1 + else: + merged_arr.append(right[r]) + r += 1 + + merged_arr += left[l:] + merged_arr += right[r:] + + return merged_arr + +# 입력받은 문자열 n개의 행을 int형 2차원 리스트로 변환-> a에 할당 +a = [list(map(int,input().split())) for i in range(n)] +a = merge_sort(a) + +for i in a: + print(i[0],i[1]) \ No newline at end of file diff --git "a/\354\235\264\355\213\260\354\247\200\354\234\244/11729_\355\225\230\353\205\270\354\235\264 \355\203\221.py" "b/\354\235\264\355\213\260\354\247\200\354\234\244/11729_\355\225\230\353\205\270\354\235\264 \355\203\221.py" new file mode 100644 index 0000000..b39847c --- /dev/null +++ "b/\354\235\264\355\213\260\354\247\200\354\234\244/11729_\355\225\230\353\205\270\354\235\264 \355\203\221.py" @@ -0,0 +1,22 @@ +#11729_하노이 탑 + +n = int(input()) + +#n: 원판 수 +#a,b,c : 3개의 장대 +def top(n, a, b, c):# n개의 원판을 a에서 c로 옮기는 하노이 탑 + + # 원판 1개 : a->c로 옮기면 끝 + if n == 1: + print(a, c) + + # 재귀 + else: + top(n-1, a, c, b) # a에 있는 원판 n-1 개를 b로 옮김 + print(a, c) # a에 남아 있던 가장 큰 n번 원반을 c로 옮김 + top(n-1, b, a, c) # b의 n-1 개의 원반을 c로 옮김 + +sum = 2 ** n - 1 # 이동 횟수 = 2^n-1 +print(sum) + +top(n, 1, 2, 3) \ No newline at end of file diff --git "a/\354\235\264\355\213\260\354\247\200\354\234\244/1431_\354\213\234\353\246\254\354\226\274 \353\262\210\355\230\270.py" "b/\354\235\264\355\213\260\354\247\200\354\234\244/1431_\354\213\234\353\246\254\354\226\274 \353\262\210\355\230\270.py" new file mode 100644 index 0000000..7f639ff --- /dev/null +++ "b/\354\235\264\355\213\260\354\247\200\354\234\244/1431_\354\213\234\353\246\254\354\226\274 \353\262\210\355\230\270.py" @@ -0,0 +1,29 @@ +#1431_시리얼 번호 +# sort 함수 이용 +# 시리얼번호 : 알파벳 대문자(A-Z) ,숫자(0-9) 로 이루어짐 +# 1. 길이 짧은 것이 앞으로 +# 2. 길이 같을 때, a의 모든 자리수의 합(숫자만)과 b의 모든 자리수의 합(숫자만) 중에 작은 합이 앞으로 +# 3. 1,2번 조건으로도 비교 안되면, 사전 순으로 -> 숫자가 알파벳 보다 앞 +# lamda식을 이용한 정렬 arr.sort(key = lambda x : (정렬기준1, 정렬기준2, 정렬기준3, …)) + +import sys +n = int(input()) + +def sum_num(num): + result = 0 # result : 모든 자리수의 합 + for i in num: + if i.isdigit(): # isdisit() : 문자열이 숫자인지 true/false + result += int(i) + return result + +arr = [] +for i in range(n): + arr.append(sys.stdin.readline().strip()) + +# 1. len(x) = 길이 +# 2. sum_num(x) = 모든 자리수의 합 +# 3. x = 사전순 +arr.sort(key = lambda x:(len(x), sum_num(x), x)) + +for i in arr: + print(i) \ No newline at end of file diff --git "a/\354\235\264\355\213\260\354\247\200\354\234\244/1966_\355\224\204\353\246\260\355\204\260 \355\201\220.py" "b/\354\235\264\355\213\260\354\247\200\354\234\244/1966_\355\224\204\353\246\260\355\204\260 \355\201\220.py" new file mode 100644 index 0000000..9002ee5 --- /dev/null +++ "b/\354\235\264\355\213\260\354\247\200\354\234\244/1966_\355\224\204\353\246\260\355\204\260 \355\201\220.py" @@ -0,0 +1,19 @@ +num = int(input()) + +for i in range(num): + N, M = map(int, input().split()) + queue = list(map(int, input().strip().split())) + queue = [(v, idx) for idx, v in enumerate(queue)] + + order = 0 + + while True: + if max(queue)[0] == queue[0][0]: + order += 1 + if queue[0][1] == M: + print(order) + break + else: + queue.pop(0) + else: + queue.append(queue.pop(0)) \ No newline at end of file diff --git "a/\354\235\264\355\213\260\354\247\200\354\234\244/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244_\354\240\204\355\231\224\353\262\210\355\230\270 \353\252\251\353\241\235.py" "b/\354\235\264\355\213\260\354\247\200\354\234\244/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244_\354\240\204\355\231\224\353\262\210\355\230\270 \353\252\251\353\241\235.py" new file mode 100644 index 0000000..29f260a --- /dev/null +++ "b/\354\235\264\355\213\260\354\247\200\354\234\244/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244_\354\240\204\355\231\224\353\262\210\355\230\270 \353\252\251\353\241\235.py" @@ -0,0 +1,17 @@ +def solution(phone_book): + answer = True + hash = {} + + for i in phone_book: + hash[i] = 0 + + for i in phone_book: + print(i) + temp = '' + for j in i: + temp += j + if temp in hash and temp != i: + answer = False + return answer + +print(solution(["34", "3456", "789"])) \ No newline at end of file