There was an error while loading. Please reload this page.
2 parents fa4cf8a + f1d854c commit 7d1bf36Copy full SHA for 7d1bf36
5 files changed
minjeong/Backtracking/2024-03-13-[백준]-#14888-연산자 끼워넣기.py
@@ -0,0 +1,33 @@
1
+# 입력받기
2
+n = int(input()) # 수의 개수
3
+nums = list(map(int, input().split())) # 수열
4
+operator = list(map(int, input().split())) # 연산자
5
+
6
+# 최솟값, 최댓값 초기화
7
+minValue= 1000000000
8
+maxValue= -1000000000
9
10
+def calculator(idx, res, add, sub, prd, div):
11
+ global minValue, maxValue
12
13
+ if idx == n: # 종료조건: 연산자를 모두 사용했을 경우
14
+ # 다 탐색했기 때문에 최대최소 비교해서 최솟값과 최댓값 갱신
15
+ maxValue = max(maxValue, res)
16
+ minValue = min(minValue, res)
17
+ return
18
19
+ if add > 0:
20
+ calculator(idx + 1, res + nums[idx], add-1, sub, prd, div)
21
22
+ if sub > 0:
23
+ calculator(idx + 1, res - nums[idx], add, sub-1, prd, div)
24
25
+ if prd > 0:
26
+ calculator(idx + 1, res * nums[idx], add, sub, prd-1, div)
27
28
+ if div > 0:
29
+ calculator(idx + 1, int(res / nums[idx]), add, sub, prd, div-1)
30
31
+calculator(1, nums[0], operator[0], operator[1], operator[2], operator[3])
32
+print(maxValue)
33
+print(minValue)
minjeong/Backtracking/2024-03-15-[백준]-#14889-스타트와 링크.py
@@ -0,0 +1,36 @@
+import sys
+input = sys.stdin.readline
+N = int(input())
+S = [list(map(int, input().split())) for _ in range(N)]
+check = [False] * N
+minValue = 1000000000
+def calculate():
+ global minValue
+ Ateam = 0
+ Bteam = 0
+ for i in range(N):
+ for j in range(N):
+ if check[i] and check[j]:
+ Ateam += S[i][j]
+ if not check[i] and not check[j]:
+ Bteam += S[i][j]
+ minValue = min(minValue, abs(Ateam - Bteam))
+def backtracking(start, size):
+ if size == N//2:
+ calculate()
+ for i in range(start, N):
+ if check[i] == False:
+ check[i] = True
+ backtracking(i+1, size+1)
+ check[i] = False
34
35
+backtracking(0, 0)
36
minjeong/DynamicProgramming/2024-03-18-[백준]-#1904-01타일.py
@@ -0,0 +1,15 @@
+n = int(input())
+dp = [0] * (n+2)
+dp[1] = 1
+dp[2] = 2
+for i in range(3, n+1):
+ dp[i] = (dp[i-1] + dp[i-2])%15746
+print(dp[n])
minjeong/Stack, Queue/2024-03-12-[PGS]-캐시.py
@@ -0,0 +1,27 @@
+from collections import deque
+def solution(cacheSize, cities):
+ totalTime = 0
+ cache = deque([])
+ '''
+ 전체적인 과정은 FIFO로 수행된다.
+ 만약 이미 존재하는 도시라면 맨 뒤로 다시 보낸다.
+ for i in range(len(cities)):
+ city = cities[i].lower() # 대소문자 구분 없으므로 cities를 lowercase로 바꾸기
+ if cacheSize == 0: # cacheSize가 0인 경우에 대한 예외처리(TC 7, 17)
+ totalTime += 5
+ continue # 그 후 바로 빠져나옴
+ if city in cache: # 캐시에 도시가 이미 존재하는 경우
+ cache.remove(city)
+ cache.append(city)
+ totalTime += 1 # cache hit
+ else:
+ if len(cache) == cacheSize and cacheSize > 0: # 캐시가 가득찼다면, 맨 앞에 하나 버린다. 이때 cacheSize가 0인 경우도 있다. 이때는 popleft하면 에러가 나므로 cacheSize가 0이상인 경우만 처리되도록 한다.
+ cache.popleft()
+ totalTime += 5 # cache miss
+ return totalTime
minjeong/String/2024-03-16-[Programmers]-#뉴스클러스터링.py
@@ -0,0 +1,34 @@
+from collections import Counter
+def solution(str1, str2):
+ answer = 0
+ A = [] # str1
+ B = [] # str2
+ # str1과 str2 전처리: 2개씩 끊어서 저장하기
+ for i in range(len(str1)):
+ temp = str1[i:i+2].lower() # 대소문자 구분 X
+ if temp.isalpha() and len(temp) == 2:
+ A.append(temp)
+ for i in range(len(str2)):
+ temp = str2[i:i+2].lower() # 대소문자 구분 X
+ B.append(temp)
+ # Counter 객체로 변환
+ A = Counter(A)
+ B = Counter(B)
+ # 교집합과 합집합 구하기
+ intersection = A & B
+ union = A | B
+ # 합집합의 수가 0인 경우에 대한 예외처리
+ if sum(union.values()) == 0:
+ answer = 65536
+ answer = int(sum(intersection.values()) / sum(union.values()) * 65536)
+ return answer
0 commit comments