Skip to content

Commit

Permalink
Merge pull request #262 from wellFoundedDevelopers/heejik/63week
Browse files Browse the repository at this point in the history
[장희직] - 괄호 제거, 도시 건설�, 싸지방에 간 준하�, 타일 채우기
  • Loading branch information
jhg3410 authored May 21, 2024
2 parents 0e5be66 + a764f66 commit aadb6c3
Show file tree
Hide file tree
Showing 4 changed files with 130 additions and 0 deletions.
32 changes: 32 additions & 0 deletions src/main/kotlin/heejik/63week/괄호 제거.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
exp = input()
answers = []


def dfs(start_idx, now_exp):
if now_exp not in answers:
answers.append(now_exp)
# start_idx 포함 이후부터 ( 이게 없으면 그냥 리턴하는 것도 고려
for i in range(start_idx, len(now_exp)):
if now_exp[i] == '(':
# 여기에 맞는 닫는 괄호를 찾아야 한다
close_idx = find_idx(i, now_exp)
dfs(start_idx=i, now_exp=now_exp[:i] + now_exp[i + 1:close_idx] + now_exp[close_idx + 1:])


def find_idx(i, find_exp):
cnt = 1
for idx, char in enumerate(find_exp[i + 1:]):
if char == ')':
cnt -= 1
if cnt == 0:
return i + 1 + idx
if char == '(':
cnt += 1


if __name__ == '__main__':
dfs(start_idx=0, now_exp=exp)
answers.sort()
answers.remove(exp)
for answer in answers:
print(answer)
41 changes: 41 additions & 0 deletions src/main/kotlin/heejik/63week/도시 건설.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
n, m = map(int, input().split())
all_cost = 0
minimum_cost = 0
edges = []
parents = [i for i in range(n + 1)]

for _ in range(m):
a, b, cost = map(int, input().split())
all_cost += cost
edges.append([a, b, cost])

edges.sort(key=lambda x: x[2])

for a, b, cost in edges:
parentA = a
parentB = b

while parentA != parents[parentA]:
parentA = parents[parentA]

while parentB != parents[parentB]:
parentB = parents[parentB]

if parentA == parentB:
continue

if parentA < parentB:
parents[parentB] = parentA
else:
parents[parentA] = parentB

minimum_cost += cost

count = 0
for i in range(1, n + 1):
if i == parents[i]:
count += 1
if count > 1:
print(-1)
else:
print(all_cost - minimum_cost)
41 changes: 41 additions & 0 deletions src/main/kotlin/heejik/63week/싸지방에 간 준하.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import heapq
import sys

input = sys.stdin.readline


def solve():
while people:
start, end = heapq.heappop(people)

# 시간이 다 된 자리는 뺀다.
while seat and seat[0][0] <= start:
end_time, idx = heapq.heappop(seat)
heapq.heappush(possible_index, idx)

# 사람을 자리에 넣는 부분
if possible_index:
idx = heapq.heappop(possible_index)
else:
idx = len(seat)

heapq.heappush(seat, [end, idx])
answer[idx] += 1

count_seat = answer.index(0)
print(count_seat)
print(*answer[:count_seat])


if __name__ == '__main__':
n = int(input())
people = []
seat = []
possible_index = []
answer = [0 for _ in range(n + 1)]

for _ in range(n):
start, end = map(int, input().split())
heapq.heappush(people, [start, end])

solve()
16 changes: 16 additions & 0 deletions src/main/kotlin/heejik/63week/타일 채우기.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
if __name__ == '__main__':
n = int(input())
dp = [0 for _ in range(n + 1)]
if n % 2 == 1:
print(dp[n])
exit(0)

dp[2] = 3

for x in range(4, n + 1, 2):
dp[x] += (dp[x - 2] * dp[2])
for i in range(2, x - 2, 2):
dp[x] += 2 * dp[i]
dp[x] += 2

print(dp[n])

0 comments on commit aadb6c3

Please sign in to comment.