Skip to content

Commit 7fa24ec

Browse files
committed
kakao coding test
1 parent 94906fb commit 7fa24ec

10 files changed

Lines changed: 145 additions & 0 deletions

File tree

Iwanttogo/bisect/bisect.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from bisect import bisect, bisect_left
2+
class Solution:
3+
def twoSum(self, nums: List[int], target: int) -> List[int]:
4+
N = len(nums)
5+
half = target // 2
6+
half_idx = bisect(nums, target)
7+
for i, num in enumerate(nums[:half_idx]):
8+
new_target = target - num
9+
idx = bisect_left(nums, new_target, i+1)
10+
if idx < len(nums) and nums[idx] == new_target:
11+
return [i+1, idx+1]
12+

Iwanttogo/bisect/bisect_2.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from bisect import bisect
2+
class Solution:
3+
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
4+
# 에외처리
5+
if not matrix:
6+
return False
7+
8+
# 첫행의 맨뒤
9+
row = 0
10+
col = len(matrix[0]) - 1
11+
12+
while row <= len(matrix) -1 and col >= 0:
13+
if target == matrix[row][col]:
14+
return True
15+
# 타겟이 작으면 왼쪽으로 이동
16+
elif target < matrix[row][col]:
17+
col -= 1
18+
# 타겟이 크면 아래로 이동
19+
elif target > matrix[row][col]:
20+
row -= 1
21+
return False
22+
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from collections import deque
2+
def solution(board, moves):
3+
board = list(map(list, list(zip(*board[::-1]))))
4+
basket = []
5+
cnt = 0
6+
for move in moves:
7+
cur_b = board[move-1]
8+
if not cur_b:
9+
continue
10+
cur = None
11+
while cur_b:
12+
cur = cur_b.pop()
13+
if cur:
14+
break
15+
if not cur:
16+
continue
17+
if basket and basket[-1] == cur:
18+
cnt += 2
19+
basket.pop()
20+
else:
21+
basket.append(cur)
22+
return cnt
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
def solution(board, moves):
2+
stacklist = []
3+
answer = 0
4+
5+
for i in moves:
6+
for j in range(len(board)):
7+
if board[j][i-1] != 0:
8+
stacklist.append(board[j][i-1])
9+
# 먼저 스택에 넣고 비교한다.
10+
board[j][i-1] = 0
11+
12+
if len(stacklist) > 1:
13+
if stacklist[-1] == stacklist[-2]:
14+
stacklist.pop(-1)
15+
stacklist.pop(-1)
16+
answer += 2
17+
break
18+
return answer
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from collections import Counter
2+
def solution(N, stages):
3+
answer = [] # (stage, 실패율)
4+
c = Counter(stages)
5+
all_num = len(stages)
6+
try_num = all_num
7+
for i in range(1, N+1):
8+
if try_num <= 0:
9+
answer.append((i, 0))
10+
continue
11+
answer.append((i, c[i]/try_num))
12+
try_num = try_num - c[i]
13+
return list(map(lambda x: x[0], sorted(answer, key=lambda x: x[1], reverse=True)))
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
def solution(N, stages):
2+
result = {}
3+
denominator = len(stages)
4+
for stage in range(1, N+1):
5+
if denominator != 0:
6+
count = stages.count(stage)
7+
result[stage] = count / denominator
8+
denominator -= count
9+
else:
10+
result[stage] = 0
11+
return sorted(result, key=lambda x: result[x], reverse=True)
12+

programmers/2019internship/key.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from itertools import combinations
2+
3+
def solution(relation):
4+
N = len(relation)
5+
CN = len(relation[0])
6+
if CN == 1:
7+
return 1
8+
unique = []
9+
idxs = [i for i in range(CN)]
10+
# 유일성 검증
11+
for n in range(1, N+1):
12+
for r in combinations(idxs, n):
13+
sets = []
14+
for row in relation:
15+
sets.append(''.join([row[i] for i in range(CN) if i in r]))
16+
sets = set(sets)
17+
if len(sets) == N:
18+
unique.append(r)
19+
answer = []
20+
unique = list(reversed(unique))
21+
while unique:
22+
element = unique.pop()
23+
answer.append(element)
24+
del_list = []
25+
for other_element in unique:
26+
if set(element).issubset(set(other_element)):
27+
del_list.append(other_element)
28+
for del_element in del_list:
29+
unique.remove(del_element)
30+
return len(answer)
31+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
def solution(s):
2+
sets = [set()]
3+
result = []
4+
elements = s.rstrip('}').lstrip('{').split('},{')
5+
for element in elements:
6+
sets.append(set(element.split(',')))
7+
sets.sort(key=len)
8+
for i in range(len(sets)):
9+
result.append(sets[i] - sets[i-1])
10+
return list(map(lambda x: int(list(x)[0]), sets[1:]))
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from collections import Counter
2+
def solution(s):
3+
new_s = [ss.replace('{', '').replace('}', '') for ss in s.split(',')]
4+
return [int(c[0]) for c in sorted(Counter,(new_s).items(), key=lambda x: x[1], reverse=True)]
5+

programmers/2019internship/tuple_3.py

Whitespace-only changes.

0 commit comments

Comments
 (0)