Skip to content

Commit c3e5973

Browse files
committed
0405
1 parent 15bde52 commit c3e5973

File tree

12 files changed

+418
-0
lines changed

12 files changed

+418
-0
lines changed

interview/dp/abbreviation_1.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/bin/python3
2+
3+
import math
4+
import os
5+
import random
6+
import re
7+
import sys
8+
9+
# Complete the abbreviation function below.
10+
def abbreviation(a, b):
11+
if len(b) > len(a):
12+
return 'NO'
13+
if len(b) == len(a):
14+
a = a.upper()
15+
return 'YES' if a == b else 'NO'
16+
17+
ap = bp = 0
18+
while ap < len(a):
19+
if bp < len(b) and (a[ap] == b[bp] or a[ap].upper() == b[bp]):
20+
ap += 1
21+
bp += 1
22+
elif a[ap].islower():
23+
ap += 1
24+
else:
25+
break
26+
return 'YES' if bp == len(b)-1 and ap == len(a) else 'NO'
27+
28+
if __name__ == '__main__':
29+
fptr = open(os.environ['OUTPUT_PATH'], 'w')
30+
31+
q = int(input())
32+
33+
for q_itr in range(q):
34+
a = input()
35+
36+
b = input()
37+
38+
result = abbreviation(a, b)
39+
40+
fptr.write(result + '\n')
41+
42+
fptr.close()

interview/dp/abbreviation_2.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/bin/python3
2+
3+
import math
4+
import os
5+
import random
6+
import re
7+
import sys
8+
9+
# Complete the abbreviation function below.
10+
def isEqual(a, b):
11+
return a==b or a.upper()==b
12+
13+
def abbreviation(a, b):
14+
A_LEN = len(a)
15+
B_LEN = len(b)
16+
DP = [[False]*B_LEN for _ in range(A_LEN)]
17+
DP[0][0] = isEqual(a[0], b[0]) or a[0].islower()
18+
for i in range(1, A_LEN):
19+
for j in range(B_LEN):
20+
if j >= 0 and DP[i-1][j-1] and isEqual(a[i], b[j]):
21+
DP[i][j] = True
22+
if DP[i-1][j] and a[i].islower():
23+
DP[i][j] = True
24+
return "YES" if DP[A_LEN-1][B_LEN-1] else "NO"
25+
26+
if __name__ == '__main__':
27+
fptr = open(os.environ['OUTPUT_PATH'], 'w')
28+
29+
q = int(input())
30+
31+
for q_itr in range(q):
32+
a = input()
33+
34+
b = input()
35+
36+
result = abbreviation(a, b)
37+
38+
fptr.write(result + '\n')
39+
40+
fptr.close()

interview/dp/candy_1.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#!/bin/python3
2+
3+
import math
4+
import os
5+
import random
6+
import re
7+
import sys
8+
9+
# Complete the candies function below.
10+
def candies(n, arr):
11+
dp = [0]*n
12+
dp[0] = 1
13+
pivot = 0
14+
for i in range(1, n):
15+
if arr[i] > arr[i-1]:
16+
dp[i] = dp[i-1] + 1
17+
pivot = i
18+
else:
19+
dp[i] = 1
20+
if pivot + 1 < i:
21+
for idx in range(i-1, pivot, -1):
22+
dp[idx] = dp[idx+1] + 1
23+
if dp[pivot] < dp[pivot+1]:
24+
dp[pivot] = dp[pivot+1] + 1
25+
26+
print(dp)
27+
return sum(dp)
28+
29+
if __name__ == '__main__':
30+
fptr = open(os.environ['OUTPUT_PATH'], 'w')
31+
32+
n = int(input())
33+
34+
arr = []
35+
36+
for _ in range(n):
37+
arr_item = int(input())
38+
arr.append(arr_item)
39+
40+
result = candies(n, arr)
41+
42+
fptr.write(str(result) + '\n')
43+
44+
fptr.close()

interview/dp/candy_2.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/bin/python3
2+
3+
import math
4+
import os
5+
import random
6+
import re
7+
import sys
8+
9+
# Complete the candies function below.
10+
def candies(n, arr):
11+
dp = [1]*n
12+
for i in range(1, n):
13+
if arr[i] > arr[i-1]:
14+
dp[i] = dp[i-1] + 1
15+
16+
for j in range(n-1, 0, -1):
17+
if arr[j] < arr[j-1] and dp[j] >= dp[j-1]:
18+
dp[j-1] = dp[j] + 1
19+
20+
return sum(dp)
21+
22+
23+
print(dp)
24+
return sum(dp)
25+
26+
if __name__ == '__main__':
27+
fptr = open(os.environ['OUTPUT_PATH'], 'w')
28+
29+
n = int(input())
30+
31+
arr = []
32+
33+
for _ in range(n):
34+
arr_item = int(input())
35+
arr.append(arr_item)
36+
37+
result = candies(n, arr)
38+
39+
fptr.write(str(result) + '\n')
40+
41+
fptr.close()

interview/greedy/luck_1.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#!/bin/python3
2+
3+
import math
4+
import os
5+
import random
6+
import re
7+
import sys
8+
9+
# Complete the luckBalance function below.
10+
def luckBalance(k, contests):
11+
contests.sort(key=lambda x: (-x[1], x[0]))
12+
loose_count = len(list(filter(lambda x: x[1]==1, contests))) - k
13+
sum_count = 0
14+
for contest in contests[loose_count:]:
15+
sum_count += contest[0]
16+
for contest in contests[:loose_count]:
17+
sum_count -= contest[0]
18+
return sum_count
19+
20+
if __name__ == '__main__':
21+
fptr = open(os.environ['OUTPUT_PATH'], 'w')
22+
23+
nk = input().split()
24+
25+
n = int(nk[0])
26+
27+
k = int(nk[1])
28+
29+
contests = []
30+
31+
for _ in range(n):
32+
contests.append(list(map(int, input().rstrip().split())))
33+
34+
result = luckBalance(k, contests)
35+
36+
fptr.write(str(result) + '\n')
37+
38+
fptr.close()

interview/search/minimum_time.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
def findItems(machines,temp):
2+
ans = 0
3+
for i in range(len(machines)):
4+
ans += temp // machines[i]
5+
return ans
6+
7+
def BinarySearch(machines,goal,high):
8+
low = 1
9+
while low < high:
10+
mid = (low + high) >> 1
11+
item = findItems(machines,mid)
12+
if item < goal:
13+
low = mid + 1
14+
else:
15+
high = mid
16+
return high
17+
# Complete the minTime function below.
18+
def minTime(machines, goal):
19+
maxval = -float('inf')
20+
for i in range(len(machines)):
21+
maxval = max(maxval, machines[i])
22+
return BinarySearch(machines,goal,maxval * goal)

interview/search/pairs_1.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/bin/python3
2+
3+
import math
4+
import os
5+
import random
6+
import re
7+
import sys
8+
9+
# Complete the pairs function below.
10+
def pairs(k, arr):
11+
count = 0
12+
arr.sort()
13+
left, right = 0, 1
14+
while right < len(arr) and left < len(arr):
15+
diff = arr[right] - arr[left]
16+
if diff > k:
17+
left += 1
18+
elif diff < k:
19+
right += 1
20+
else:
21+
count += 1
22+
left += 1
23+
right += 1
24+
return count
25+
26+
if __name__ == '__main__':
27+
fptr = open(os.environ['OUTPUT_PATH'], 'w')
28+
29+
nk = input().split()
30+
31+
n = int(nk[0])
32+
33+
k = int(nk[1])
34+
35+
arr = list(map(int, input().rstrip().split()))
36+
37+
result = pairs(k, arr)
38+
39+
fptr.write(str(result) + '\n')
40+
41+
fptr.close()

interview/search/pairs_2.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#!/bin/python3
2+
# greedy 한 해법
3+
import math
4+
import os
5+
import random
6+
import re
7+
import sys
8+
9+
# Complete the pairs function below.
10+
def pairs(k, arr):
11+
count = 0
12+
d = {}
13+
for i in arr:
14+
d[i] = i
15+
for j in arr:
16+
g = j + k
17+
if g in d:
18+
count += 1
19+
return count
20+
21+
if __name__ == '__main__':
22+
fptr = open(os.environ['OUTPUT_PATH'], 'w')
23+
24+
nk = input().split()
25+
26+
n = int(nk[0])
27+
28+
k = int(nk[1])
29+
30+
arr = list(map(int, input().rstrip().split()))
31+
32+
result = pairs(k, arr)
33+
34+
fptr.write(str(result) + '\n')
35+
36+
fptr.close()

interview/search/triple_1.py

Whitespace-only changes.

interview/search/triple_2.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#!/bin/python3
2+
3+
import math
4+
import os
5+
import random
6+
import re
7+
import sys
8+
from bisect import bisect
9+
# Complete the triplets function below.
10+
11+
def triplets(a, b, c):
12+
a = sorted(list(set(a)))
13+
b = sorted(list(set(b)))
14+
c = sorted(list(set(c)))
15+
16+
ai = 0
17+
bi = 0
18+
ci = 0
19+
20+
ans = 0
21+
22+
23+
while bi < len(b):
24+
while ai < len(a) and a[ai]<=b[bi]:
25+
ai += 1
26+
while ci < len(c) and c[ci] <=b[bi]:
27+
ci += 1
28+
ans += ai*ci
29+
bi += 1
30+
31+
return ans
32+
33+
if __name__ == '__main__':
34+
fptr = open(os.environ['OUTPUT_PATH'], 'w')
35+
36+
lenaLenbLenc = input().split()
37+
38+
lena = int(lenaLenbLenc[0])
39+
40+
lenb = int(lenaLenbLenc[1])
41+
42+
lenc = int(lenaLenbLenc[2])
43+
44+
arra = list(map(int, input().rstrip().split()))
45+
46+
arrb = list(map(int, input().rstrip().split()))
47+
48+
arrc = list(map(int, input().rstrip().split()))
49+
50+
ans = triplets(arra, arrb, arrc)
51+
52+
fptr.write(str(ans) + '\n')
53+
54+
fptr.close()

0 commit comments

Comments
 (0)