diff --git a/LJEDD2/2024-2/README.md b/LJEDD2/2024-2/README.md index fb0e7d6..df7d878 100644 --- a/LJEDD2/2024-2/README.md +++ b/LJEDD2/2024-2/README.md @@ -10,3 +10,9 @@ | 6차시 | 2024.08.03 | 완전탐색 | 피로도 | [#6](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/141) | | 7차시 | 2024.09.01 | 위상정렬 | 줄 세우기 | [#7](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/152) | | 8차시 | 2024.09.04 | 위상정렬 | 문제집 | [#8](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/154) | +| 9차시 | 2024.09.07 | 스택 | 원숭이 매달기 | [#9](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/156) | +| 10차시 | 2024.09.11 | 우선순위 큐 | 카드 정렬하기 | [#10](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/159) | +| 11차시 | 2024.09.18 | 우선순위 큐 | N번째 큰 수 | [#11](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/161) | +| 12차시 | 2024.09.21 | 우선순위 큐 | 카드 합체 놀이 | [#12](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/164) | +| 13차시 | 2024.09.25 | 플로이드 워셜 | 친구 | [#13](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/167) | +| 14차시 | 2024.10.02 | 브루트포스 | 세 개의 소수 문제 | [#14](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/174) | \ No newline at end of file diff --git "a/LJEDD2/2024-2/\353\270\214\353\243\250\355\212\270\355\217\254\354\212\244/\354\204\270 \352\260\234\354\235\230 \354\206\214\354\210\230 \353\254\270\354\240\234.py" "b/LJEDD2/2024-2/\353\270\214\353\243\250\355\212\270\355\217\254\354\212\244/\354\204\270 \352\260\234\354\235\230 \354\206\214\354\210\230 \353\254\270\354\240\234.py" new file mode 100644 index 0000000..f84d5a6 --- /dev/null +++ "b/LJEDD2/2024-2/\353\270\214\353\243\250\355\212\270\355\217\254\354\212\244/\354\204\270 \352\260\234\354\235\230 \354\206\214\354\210\230 \353\254\270\354\240\234.py" @@ -0,0 +1,30 @@ +import sys +input = sys.stdin.readline + +# 하나의 소수를 여러 번 더할 수 있다. -> 브루트포스 가능 +# 5보다 큰 임의의 홀수로 세 소수의 합이 되는지 +def search(n): + for i in arr: + for j in arr: + for k in arr: + if i+j+k == n: + return i, j, k + + else: # 안되면 0 + return 0 + +# 에라토스테네스의 체 - 소수 판별 +prime = [True] * 1001 + +for i in range(2,101): + if prime[i]: + for j in range(i*2, 1001, i): + prime[j] = False + +# 소수 찾기 +arr = [i for i in range(2, 1001) if prime[i] == True] + +t = int(input()) +for _ in range(t): + n = int(input()) + print(*search(n)) \ No newline at end of file diff --git "a/LJEDD2/2024-2/\354\212\244\355\203\235/\354\233\220\354\210\255\354\235\264 \353\247\244\353\213\254\352\270\260.py" "b/LJEDD2/2024-2/\354\212\244\355\203\235/\354\233\220\354\210\255\354\235\264 \353\247\244\353\213\254\352\270\260.py" new file mode 100644 index 0000000..4fd77b0 --- /dev/null +++ "b/LJEDD2/2024-2/\354\212\244\355\203\235/\354\233\220\354\210\255\354\235\264 \353\247\244\353\213\254\352\270\260.py" @@ -0,0 +1,37 @@ +# 더 간단한 풀이 ... (문자열) +import sys +input = sys.stdin.readline + +for _ in range(int(input())): + cnt = 0 + s = input().rstrip() + while "[]" in s: + s = s.replace("[]", "") + cnt += 1 + + print(2**cnt) + + + +# import sys + +# input = sys.stdin.readline + +# for _ in range(int(input())): +# s = input().rstrip() # 괄호 문자열 + +# max_depth = 0 # 최대 깊이를 저장할 변수 +# tree = list() # 현재 열린 괄호를 저장할 스택임 + +# for i in s: +# # 여는 괄호일 경우 스택에 열린 괄호 추가 +# if i == '[': +# tree.append('[') +# continue +# # 닫는 괄호일 경우 +# max_depth = max(len(tree), max_depth) +# # 현재 깊이와 최대 깊이 중 큰 값을 저장하고 +# tree.pop() # 마지막 열린 괄호를 제거 + +# print(2 ** max_depth) # 쌍을 이룰때 가지 생성, 가지2-.1개씩 나눠가짐 +# # 결국엔 2의 depth승 \ No newline at end of file diff --git "a/LJEDD2/2024-2/\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220/N\353\262\210\354\247\270 \355\201\260 \354\210\230.py" "b/LJEDD2/2024-2/\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220/N\353\262\210\354\247\270 \355\201\260 \354\210\230.py" new file mode 100644 index 0000000..57ae8b3 --- /dev/null +++ "b/LJEDD2/2024-2/\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220/N\353\262\210\354\247\270 \355\201\260 \354\210\230.py" @@ -0,0 +1,17 @@ +import sys, heapq +input = sys.stdin.readline + +n = int(input()) +heap = [] + +for _ in range(n): + for number in map(int, input().split()): + + if len(heap) < n: # 비교 대상이 모자랄 경우 + heapq.heappush(heap, number) #그대로 추가 + + else: + if number > heap[0]: # 제일 작은것보다 크면 + heapq.heapreplace(heap, number) #작은거 빼고 큰거 넣어줌 + +print(heap[0]) # 맨앞에 있는게 N번째로 큰놈 \ No newline at end of file diff --git "a/LJEDD2/2024-2/\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220/\354\271\264\353\223\234 \354\240\225\353\240\254\355\225\230\352\270\260.py" "b/LJEDD2/2024-2/\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220/\354\271\264\353\223\234 \354\240\225\353\240\254\355\225\230\352\270\260.py" new file mode 100644 index 0000000..ba42acf --- /dev/null +++ "b/LJEDD2/2024-2/\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220/\354\271\264\353\223\234 \354\240\225\353\240\254\355\225\230\352\270\260.py" @@ -0,0 +1,18 @@ +import sys +import heapq +input = sys.stdin.readline + +cards = list(int(input()) for _ in range(int(input().strip()))) # 데이터 입력받음 +heapq.heapify(cards) # 리스트를 힙구조로 바꿔주는 함수 + +result = 0 +while len(cards) > 1 : + f = heapq.heappop(cards) # 첫번째 뭉탱이 + s = heapq.heappop(cards) # 두번째 뭉탱이 + + result += f+s + + # 바꿔치기 횟수가 최소가 되게끔 + heapq.heappush(cards, f+s) + +print(result) \ No newline at end of file diff --git "a/LJEDD2/2024-2/\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220/\354\271\264\353\223\234 \355\225\251\354\262\264 \353\206\200\354\235\264.py" "b/LJEDD2/2024-2/\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220/\354\271\264\353\223\234 \355\225\251\354\262\264 \353\206\200\354\235\264.py" new file mode 100644 index 0000000..d0a62f1 --- /dev/null +++ "b/LJEDD2/2024-2/\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220/\354\271\264\353\223\234 \355\225\251\354\262\264 \353\206\200\354\235\264.py" @@ -0,0 +1,17 @@ +import heapq +n, m = map(int,input().split()) + +#힙 구조로 변환 +numbers = list(map(int,input().split())) +heapq.heapify(numbers) + +for _ in range(m): + + x = heapq.heappop(numbers) + y = heapq.heappop(numbers) + + # x와 y 둘 다 값 교체 + heapq.heappush(numbers, x+y) + heapq.heappush(numbers, x+y) + +print(sum(numbers)) diff --git "a/LJEDD2/2024-2/\355\201\220/\354\271\264\353\223\2341.py" "b/LJEDD2/2024-2/\355\201\220/\354\271\264\353\223\2341.py" new file mode 100644 index 0000000..0086850 --- /dev/null +++ "b/LJEDD2/2024-2/\355\201\220/\354\271\264\353\223\2341.py" @@ -0,0 +1,14 @@ +import sys +from collections import deque +input = sys.stdin.readline + +n = int(input().strip()) +queue = deque([i for i in range(1, n+1)]) +result = [] + +while len(queue) > 1: + result.append(queue.popleft()) + queue.append(queue.popleft()) +else: + result.append(queue.popleft()) +print(" ".join(map(str, result))) \ No newline at end of file diff --git "a/LJEDD2/2024-2/\355\224\214\353\241\234\354\235\264\353\223\234 \354\233\214\354\205\234/\354\271\234\352\265\254.py" "b/LJEDD2/2024-2/\355\224\214\353\241\234\354\235\264\353\223\234 \354\233\214\354\205\234/\354\271\234\352\265\254.py" new file mode 100644 index 0000000..ccc6017 --- /dev/null +++ "b/LJEDD2/2024-2/\355\224\214\353\241\234\354\235\264\353\223\234 \354\233\214\354\205\234/\354\271\234\352\265\254.py" @@ -0,0 +1,21 @@ +import sys +input = sys.stdin.readline + +n = int(input()) +graph = [list(input().strip()) for _ in range(n)] +visited = [[0] * n for _ in range(n)] + +for k in range(n): + for i in range(n): + for j in range(n): + if i == j: + continue + + # 2-친구인 경우 + if graph[i][j] == 'Y' or (graph[i][k] == 'Y' and graph[k][j] == 'Y'): + visited [i][j] = 1 + +res = 0 +for row in visited: + res = max(res,sum(row)) +print(res) \ No newline at end of file