Skip to content

Commit a5813c0

Browse files
authored
Merge branch 'main' into hongjoo
2 parents bd24e68 + d13edc6 commit a5813c0

File tree

29 files changed

+1201
-19
lines changed

29 files changed

+1201
-19
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
'''
2+
์š”๊ตฌ์‚ฌํ•ญ
3+
- k (1~10)์ ์„ ์–ดํ”ผ์น˜๊ฐ€ a๋ฐœ์„ ๋งž์ท„๊ณ , ๋ผ์ด์–ธ์ด b๋ฐœ์„ ๋งžํ˜”์„ ๋•Œ, b> a์ด๋ฉด k์ ์„ ๋ผ์ด์–ธ์ด ๊ฐ€์ ธ๊ฐ€๊ณ , ์•„๋‹ˆ๋ฉด ์–ดํ”ผ์น˜๊ฐ€ k์ ์„ ๊ฐ€์ ธ๊ฐ„๋‹ค. ๋‹จ a = b = 0์ผ ๊ฒฝ์šฐ ๋ˆ„๊ตฌ๋„ k์ ์„ ๊ฐ€์ ธ๊ฐ€์ง€ ๋ชปํ•œ๋‹ค.
4+
- ๋ชจ๋“  ๊ณผ๋…์— ๋Œ€ํ•˜์—ฌ ๋‘ ์„ ์ˆ˜์˜ ์ด์  ๊ณ„์‚ฐ, ๋‹จ ์ตœ์ข… ์ ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฉด ์–ดํ”ผ์น˜๋ฅผ ์šฐ์Šน์ž๋กœ
5+
- ์–ดํ”ผ์น˜๊ฐ€ n๋ฐœ์„ ์œ ํ›„ ๊ทธ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ๋ผ์ด์–ธ์ด ์–ดํ”ผ์น˜๋ฅผ ๊ฐ€์žฅ ํฐ ์ ์ˆ˜์ฐจ๋กœ ์ด๊ธฐ๊ธฐ ์œ„ํ•ด n๋ฐœ์„ ์–ด๋–ป๊ฒŒ ๋งž์ถฐ์•ผ ํ•˜๋Š”์ง€ ๊ตฌํ•ด๋ผ.
6+
- ๋ผ์ด์–ธ์ด ์šฐ์Šนํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ -1์„ ์ถœ๋ ฅํ•˜๊ณ , ๋ผ์ด์–ธ์ด ๊ฐ€์žฅ ํฐ ์ ์ˆ˜์ฐจ๋กœ ์ด๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋‚ฎ์€ ์ ์ˆ˜๋ฅผ ๋” ๋งŽ์ด ๋งžํžŒ ๊ฒฝ์šฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.
7+
8+
9+
์•„์ด๋””์–ด
10+
- ์ด ๋ฌธ์ œ๋Š” greedy๋Š” ์•„๋‹Œ๊ฑฐ ๊ฐ™๋‹ค. greedy๋กœ ํ•˜๋ ค๋ฉด ํฐ ์ ์ˆ˜๋ฅผ ๋ฌด์กฐ๊ฑด ๋จน๊ธฐ ์œ„ํ•ด ์–ดํ”ผ์น˜๊ฐ€ ์œ ํ™”์‚ด + 1๋งŒํผ ํ•  ํ…๋ฐ ์ž…์ถœ๋ ฅ ์˜ˆ 1๋ฒˆ์ฒ˜๋Ÿผ ๋ผ์ด์–ธ์ด 10์ ์„ ๋จน์–ด๋„ 9์  8์ ์„ ์–ดํ”ผ์น˜๊ฐ€ ๋จน์œผ๋ฉด ๋ผ์ด์–ธ์ด ์ง€๊ฒŒ ๋œ๋‹ค.
11+
- ๋”ฐ๋ผ์„œ ์™„์ „ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๋ฉฐ, dfs์™€ backtracking์„ ์‚ฌ์šฉํ•˜์—ฌ ๊นŠ์ด ์šฐ์„ ์œผ๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜ ๊ณ„์‚ฐ.
12+
- ์–‘๊ถ๋Œ€ํšŒ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์•„์ด๋””์–ด: info(์–ดํ”ผ์น˜์˜ ๊ฒฐ๊ณผ ๋ฐฐ์—ด)๊ฐ€ 10์ ๋ถ€ํ„ฐ 0์ ๊นŒ์ง€์˜ ๋‚˜์—ด์ด๋ฏ€๋กœ 10์ ๋ถ€ํ„ฐ 0์ ๊นŒ์ง€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ํ™”์‚ด์„ ์œ๋‹ค. ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ˜„์žฌ ์ ์ˆ˜์— ๋Œ€ํ•ด ๋ผ์ด์–ธ์ด 0๋ฐœ ํ˜น์€ info[i] + 1๋ฐœ์„ ๋งž์ถ˜ ๊ฒฝ์šฐ๋งŒ ๊ณ ๋ คํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๊ฒฝ์šฐ๋Š” ์ง„ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰ ์–ดํ”ผ์น˜๊ฐ€ 10์ ์— 2๋ฐœ์„ ๋งž์ท„๋‹ค๋ฉด, ๋ผ์ด์–ธ์€ 0๋ฐœ์„ ๋งž์ถ”๊ณ  ํ™”์‚ด์„ ์•„๊ปด ๋‹ค์Œ ์ ์ˆ˜๋กœ ๊ฐ€๋˜์ง€, 2+1๋ฐœ์„ ๋งž์ถฐ ํ™”์‚ด์„ ์“ฐ๋”๋ผ๋„ ์ ์ˆ˜๋ฅผ ์–ป๊ณ  ๊ฐ€๋˜์ง€ ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ๋งŒ ํ•ด์•ผ ํ•œ๋‹ค.
13+
14+
15+
๊ตฌํ˜„
16+
1. dfs ์ง„ํ–‰
17+
- dfs ์ข…๋ฃŒ ์กฐ๊ฑด: ํ˜„์žฌ ์ ์ˆ˜ํŒ์ด 0์ ์ด๊ฑฐ๋‚˜, ๋‚จ์€ ํ™”์‚ด์ด ์—†์„๋•Œ
18+
- dfs ์ง„ํ–‰: (์ ์ˆ˜ ๊ทธ๋Œ€๋กœ, ํ™”์‚ด๊ฐœ์ˆ˜ ๊ทธ๋Œ€๋กœ) ํ˜น์€ (ํ˜„์žฌ ์ ์ˆ˜ ๋จน๊ธฐ, ํ™”์‚ด๊ฐœ์ˆ˜ ์†Œ๋ชจํ•˜๊ธฐ) ๋‘๊ฐ€์ง€ ๋ฒ„์ „์œผ๋กœ ๋‚˜๋‰จ
19+
2. ๋ผ์ด์–ธ๊ณผ ์–ดํ”ผ์น˜ ์ค‘ ๋ˆ„๊ฐ€ ์–ผ๋งˆ์˜ ์ฐจ์ด๋กœ ์ด๊ฒผ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜
20+
- ์ฐจ์ด๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๊ฐ€์žฅ ๋‚ฎ์€ ์ ์ˆ˜๋ฅผ ๋” ๋งŽ์ด ๋งž์ถ˜ ๋ฐฐ์—ด ์„ ํƒ
21+
22+
'''
23+
24+
# ์ ์ˆ˜์ฐจ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋‚ฎ์€ ์ ์ˆ˜๋ฅผ ๋งŽ์ด ์œ ๊ฒƒ์„ ์ •๋‹ต์œผ๋กœ
25+
def choose_answer(arr1, arr2):
26+
length = len(arr1)
27+
28+
# ๋‚ฎ์€ ์ ์ˆ˜๋ถ€ํ„ฐ ์ฒดํฌํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ ์—ญ์ˆœ์œผ๋กœ
29+
for i in range(length-1, -1, -1):
30+
if arr1[i] > arr2[i]:
31+
return arr1
32+
elif arr2[i] > arr1[i]:
33+
return arr2
34+
35+
# ๋ฐ˜๋ณต๋ฌธ์ด ๋๋‚ฌ๋Š”๋ฐ ์—ฌ๊ธฐ๊นŒ์ง€ ์˜จ ๊ฒฝ์šฐ๋Š” ๋‘ ๋ฐฐ์—ด์ด ๊ฐ™๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ์•„๋ฌด๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜
36+
return arr1
37+
38+
39+
40+
# ์Šน์ž์™€ ์ ์ˆ˜์ฐจ๋ฅผ ๋ฐ˜ํ™˜.
41+
def get_winner(lion, appeach):
42+
lion_score = 0
43+
appeach_score = 0
44+
length = len(appeach)
45+
for i in range(length):
46+
if lion[i] > 0 or appeach[i] > 0:
47+
# ๋ผ์ด์–ธ์ด ๋งž์ถ˜ ํ™”์‚ด์ด ์–ดํ”ผ์น˜๋ณด๋‹ค ๋งŽ์œผ๋ฉด ๋ผ์ด์–ธ์ด ์ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ 
48+
if lion[i] > appeach[i]:
49+
lion_score += (10 -i)
50+
# ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์–ดํ”ผ์น˜๊ฐ€ ์ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
51+
else:
52+
appeach_score += (10 - i)
53+
54+
# ๋ผ์ด์–ธ ์Šน
55+
if lion_score > appeach_score:
56+
return 1, lion_score - appeach_score
57+
else:
58+
return -1, appeach_score - lion_score
59+
60+
def dfs(n, idx, lion, appeach):
61+
global max_result, answer
62+
63+
# dfs ์ข…๋ฃŒ ์กฐ๊ฑด. ํ˜„์žฌ ์ ์ˆ˜ํŒ์ด 0์ ์ด๊ฑฐ๋‚˜, ๋‚จ์€ ํ™”์‚ด์ด ์—†์„ ๋•Œ
64+
if n == 0 or idx == 10:
65+
# ์ ์ˆ˜ํŒ์ด 0์ ์ด๋ฉด ๋ผ์ด์–ธ์˜ ๋‚จ์€ ํ™”์‚ด ๋ชจ๋‘ 0์ ์— ๋งž์ถค
66+
if idx == 10:
67+
lion[idx] = n
68+
69+
# ๋‘˜ ์ค‘ ๋ˆ„๊ฐ€ ์Šน์ž์ธ์ง€ ํŒ๋‹จํ•˜๊ณ , ๋ผ์ด์–ธ์ด ์Šน์ž๋ฉด ์ตœ๋Œ€์ ์ˆ˜์ธ์ง€ ํ™•์ธ
70+
winner, score_gap = get_winner(lion, appeach)
71+
72+
# ๋ผ์ด์–ธ์ด ์Šน์ž์ด๋ฉด
73+
if winner == 1:
74+
if max_result < score_gap:
75+
max_result = score_gap
76+
answer = lion
77+
elif max_result == score_gap:
78+
answer = choose_answer(answer, lion)
79+
return
80+
81+
# ํ˜„์žฌ ์ ์ˆ˜๋ฅผ ํฌ๊ธฐํ•˜๊ณ  ํ™”์‚ด์„ ์•„๊ปด์„œ ๋‹ค์Œ dfs ์ง„ํ–‰
82+
dfs(n, idx+1, lion[:], appeach)
83+
84+
# ์–ดํ”ผ์น˜๋ณด๋‹ค ํ•œ ๋ฐœ ๋” ์ด์„œ ํ˜„์žฌ ์ ์ˆ˜๋ฅผ ๋จน๊ณ  ๋‹ค์Œ dsf ์ง„ํ–‰
85+
if n >= appeach[idx] + 1:
86+
tmp = lion[:]
87+
tmp[idx] = appeach[idx] + 1
88+
dfs(n - (appeach[idx] + 1), idx+1, tmp, appeach)
89+
90+
91+
92+
93+
def solution(n, info):
94+
global answer, max_result
95+
# ๋ผ์ด์–ธ์ด ๋งž์ถ˜ ์ ์ˆ˜ ์ดˆ๊ธฐํ™”
96+
lion = [0] * 11
97+
# ์ •๋‹ต์ด ๋  ๋ฐฐ์—ด
98+
answer = [0] * 11
99+
100+
max_result = 0
101+
102+
# 10์ ๋ถ€ํ„ฐ 0์ ๊นŒ์ง€ ์ ์ˆ˜ํŒ์„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ˆœํšŒํ•˜๋ฉฐ ๋ช‡ ๋ฐœ์„ ๋งž์ท„๋Š”์ง€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•˜๊ธฐ ์œ„ํ•จ.
103+
# n์€ ๋‚จ์€ ํ™”์‚ด, idx๋Š” ํ˜„์žฌ ์ ์ˆ˜ํŒ(0์ด๋ฉด 10์ , 10์ด๋ฉด 0์ )
104+
dfs(n, 0, lion, info)
105+
106+
if max_result == 0:
107+
print([-1])
108+
else:
109+
print(answer)
110+
111+
112+
solution(10, [0,0,0,0,0,0,0,0,3,4,3])
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
2+
from collections import deque
3+
4+
def bfs(places, i, j, k):
5+
queue = deque()
6+
queue.append((j, k, 0)) # row, col, dist
7+
visited = [[False] * 5 for _ in range(5)]
8+
visited[j][k] = True
9+
10+
dx = [-1, 1, 0, 0]
11+
dy = [0, 0, -1, 1]
12+
13+
while queue:
14+
row, col, dist = queue.popleft()
15+
16+
if dist != 0 and places[i][row][col] == 'P':
17+
return 1
18+
19+
if dist == 2:
20+
continue
21+
22+
for d in range(4):
23+
nr = row + dx[d]
24+
nc = col + dy[d]
25+
26+
if 0 <= nr < 5 and 0 <= nc < 5 and not visited[nr][nc]:
27+
if places[i][nr][nc] != 'X':
28+
visited[nr][nc] = True
29+
queue.append((nr, nc, dist + 1))
30+
31+
return 0
32+
33+
34+
def solution(places):
35+
answer = []
36+
37+
for i in range(5): # 5 rooms
38+
violated = False
39+
for j in range(5):
40+
for k in range(5):
41+
if places[i][j][k] == 'P':
42+
if bfs(places, i, j, k):
43+
violated = True
44+
break
45+
if violated:
46+
break
47+
answer.append(0 if violated else 1)
48+
49+
return answer
50+
51+
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import sys
2+
3+
input = sys.stdin.readline
4+
from collections import deque
5+
6+
N = int(input())
7+
graph = [list(map(int, input().split())) for _ in range(N)]
8+
high = 0
9+
10+
for i in range(N):
11+
for j in range(N):
12+
if graph[i][j] > high:
13+
high = graph[i][j]
14+
15+
dx, dy = [0, 0, -1, 1], [-1, 1, 0, 0]
16+
queue = deque()
17+
18+
19+
def bfs(i, j, high):
20+
queue.append((i, j))
21+
visited[i][j] = 1
22+
23+
while queue:
24+
x, y = queue.popleft()
25+
26+
for i in range(4):
27+
nx = dx[i] + x
28+
ny = dy[i] + y
29+
30+
if nx < 0 or nx >= N or ny < 0 or ny >= N:
31+
continue
32+
33+
if graph[nx][ny] > high and visited[nx][ny] == 0:
34+
visited[nx][ny] = 1
35+
queue.append((nx, ny))
36+
37+
38+
result = 0
39+
for k in range(high):
40+
visited = [[0] * N for _ in range(N)]
41+
ans = 0
42+
43+
for i in range(N):
44+
for j in range(N):
45+
if graph[i][j] > k and visited[i][j] == 0:
46+
bfs(i, j, k)
47+
ans += 1
48+
49+
if result < ans:
50+
result = ans
51+
52+
print(result)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
n = int(input())
2+
a = list(map(int, input().split()))
3+
b = list(map(int, input().split()))
4+
a.sort()
5+
s = 0
6+
for i in range(n):
7+
b_max = max(b)
8+
s += a[i] * b_max
9+
b.remove(b_max)
10+
11+
print(s)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
"""
2+
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค. ์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ
3+
https://school.programmers.co.kr/learn/courses/30/lessons/42628
4+
์œ ํ˜•: Priority Queue
5+
"""

โ€Ž_WeeklyChallenges/W29-[PriorityQueue]/Study_PGS_42627_แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„แ…ฅแ†ซแ„แ…ณแ„…แ…ฉแ†ฏแ„…แ…ฅ.pyโ€Ž

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -43,27 +43,30 @@ def solution(jobs):
4343
"""
4444
import heapq
4545

46-
4746
def solution(jobs):
48-
answer = 0
49-
now = 0 # ํ˜„์žฌ์‹œ๊ฐ„
50-
i = 0 # ์ฒ˜๋ฆฌ๊ฐœ์ˆ˜
51-
start = -1 # ๋งˆ์ง€๋ง‰ ์™„๋ฃŒ์‹œ๊ฐ„
52-
heap = []
47+
jobs.sort() # ์š”์ฒญ์‹œ๊ฐ„ ๊ธฐ์ค€ ์ •๋ ฌ
48+
job_len = len(jobs)
49+
i = 0 # jobs ์ธ๋ฑ์Šค
50+
end_time = 0 # ํ˜„์žฌ ์‹œ๊ฐ„
51+
return_time = 0 # ์ž‘์—… ๋ฐ˜ํ™˜ ์‹œ๊ฐ„
52+
count = 0 # ์ž‘์—… ์ฒ˜๋ฆฌํ•œ ๊ฐœ์ˆ˜
5353

54-
while i < len(jobs):
55-
for job in jobs:
56-
if start < job[0] <= now:
57-
heapq.heappush(heap, [job[1], job[0]])
54+
heap = []
5855

59-
if heap:
60-
current = heapq.heappop(heap)
61-
start = now
62-
now += current[0]
63-
answer += now - current[1] # ์š”์ฒญ์œผ๋กœ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌ์‹œ๊ฐ„
56+
while count < job_len:
57+
# ํ˜„์žฌ ์‹œ๊ฐ„์— ์š”์ฒญ๋œ ์ž‘์—… ์ฒ˜๋ฆฌ
58+
while i < job_len and jobs[i][0] <= end_time:
59+
heapq.heappush(heap, (jobs[i][1], jobs[i][0], i)) # ์†Œ์š”์‹œ๊ฐ„, ์š”์ฒญ์‹œ๊ฐ„, ์ž‘์—…๋ฒˆํ˜ธ ์ˆœ์„œ
6460
i += 1
65-
else:
66-
now += 1
6761

68-
return answer // len(jobs)
62+
# ๋Œ€๊ธฐ ํ์— ์ž‘์—…์ด ์žˆ๋‹ค๋ฉด, ์‹œ๊ฐ„์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
63+
if len(heap) > 0:
64+
work_time, start_time, num = heapq.heappop(heap)
65+
end_time += work_time
66+
return_time += end_time - start_time
67+
count += 1
68+
else:
69+
# ๋Œ€๊ธฐ ํ๊ฐ€ ๋น„์—ˆ๋‹ค๋ฉด, ๋‹ค์Œ ์ž‘์—…์ด ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.
70+
end_time = jobs[i][0]
6971

72+
return return_time // job_len
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
"""
2+
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค. ๋””์Šคํฌ ์ปจํŠธ๋กค๋Ÿฌ
3+
https://school.programmers.co.kr/learn/courses/30/lessons/42627
4+
์œ ํ˜•: Priority Queue
5+
"""
6+
"""
7+
ํ’€์ด1
8+
"""
9+
import heapq
10+
11+
def solution(jobs):
12+
jobs.sort() # ์š”์ฒญ์‹œ๊ฐ„ ๊ธฐ์ค€ ์ •๋ ฌ
13+
job_len = len(jobs)
14+
i = 0 # jobs ์ธ๋ฑ์Šค
15+
end_time = 0 # ํ˜„์žฌ ์‹œ๊ฐ„
16+
return_time = 0 # ์ž‘์—… ๋ฐ˜ํ™˜ ์‹œ๊ฐ„
17+
count = 0 # ์ž‘์—… ์ฒ˜๋ฆฌํ•œ ๊ฐœ์ˆ˜
18+
19+
heap = []
20+
21+
while count < job_len:
22+
# ํ˜„์žฌ ์‹œ๊ฐ„์— ์š”์ฒญ๋œ ์ž‘์—… ์ฒ˜๋ฆฌ
23+
while i < job_len and jobs[i][0] <= end_time:
24+
heapq.heappush(heap, (jobs[i][1], jobs[i][0], i)) # ์†Œ์š”์‹œ๊ฐ„, ์š”์ฒญ์‹œ๊ฐ„, ์ž‘์—…๋ฒˆํ˜ธ ์ˆœ์„œ
25+
i += 1
26+
27+
# ๋Œ€๊ธฐ ํ์— ์ž‘์—…์ด ์žˆ๋‹ค๋ฉด, ์‹œ๊ฐ„์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
28+
if len(heap) > 0:
29+
work_time, start_time, num = heapq.heappop(heap)
30+
end_time += work_time
31+
return_time += end_time - start_time
32+
count += 1
33+
else:
34+
# ๋Œ€๊ธฐ ํ๊ฐ€ ๋น„์—ˆ๋‹ค๋ฉด, ๋‹ค์Œ ์ž‘์—…์ด ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.
35+
end_time = jobs[i][0]
36+
37+
return return_time // job_len
38+
39+
40+
"""
41+
ํ’€์ด2
42+
์ถœ์ฒ˜: https://velog.io/@kiwoong96/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4PythonLevel3-%EB%94%94%EC%8A%A4%ED%81%AC-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC
43+
"""
44+
import heapq
45+
46+
def solution(jobs):
47+
jobs.sort() # ์š”์ฒญ์‹œ๊ฐ„ ๊ธฐ์ค€ ์ •๋ ฌ
48+
job_len = len(jobs)
49+
i = 0 # jobs ์ธ๋ฑ์Šค
50+
end_time = 0 # ํ˜„์žฌ ์‹œ๊ฐ„
51+
return_time = 0 # ์ž‘์—… ๋ฐ˜ํ™˜ ์‹œ๊ฐ„
52+
count = 0 # ์ž‘์—… ์ฒ˜๋ฆฌํ•œ ๊ฐœ์ˆ˜
53+
54+
heap = []
55+
56+
while count < job_len:
57+
# ํ˜„์žฌ ์‹œ๊ฐ„์— ์š”์ฒญ๋œ ์ž‘์—… ์ฒ˜๋ฆฌ
58+
while i < job_len and jobs[i][0] <= end_time:
59+
heapq.heappush(heap, (jobs[i][1], jobs[i][0], i)) # ์†Œ์š”์‹œ๊ฐ„, ์š”์ฒญ์‹œ๊ฐ„, ์ž‘์—…๋ฒˆํ˜ธ ์ˆœ์„œ
60+
i += 1
61+
62+
# ๋Œ€๊ธฐ ํ์— ์ž‘์—…์ด ์žˆ๋‹ค๋ฉด, ์‹œ๊ฐ„์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
63+
if len(heap) > 0:
64+
work_time, start_time, num = heapq.heappop(heap)
65+
end_time += work_time
66+
return_time += end_time - start_time
67+
count += 1
68+
else:
69+
# ๋Œ€๊ธฐ ํ๊ฐ€ ๋น„์—ˆ๋‹ค๋ฉด, ๋‹ค์Œ ์ž‘์—…์ด ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.
70+
end_time = jobs[i][0]
71+
72+
return return_time // job_len

โ€Ž_WeeklyChallenges/W31-[DFS]/Assignment_BOJ_1230_๋ฌธ์ž์—ด๊ฑฐ๋ฆฌ.pyโ€Ž

Whitespace-only changes.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
## ๐Ÿš€7์›” 3์ฃผ์ฐจ (7/14) ์Šคํ„ฐ๋”” ๋ฐœ์ œ ์ฃผ์ œ: Graph
2+
> ๋ฐœ์ œ์ž: ์กฐ์œค์ƒ (@YoonYn9915)
3+
4+
> [!NOTE]
5+
> ์ฃผ์ œ: Graph
6+
7+
### ๐Ÿ—‚๏ธ ์Šคํ„ฐ๋”” ์ž๋ฃŒ
8+
- PDF: [๋ฐ”๋กœ๊ฐ€๊ธฐ](Study_PGS_92342.pdf)
9+
10+
### ๐Ÿ“– ๋ฌธ์ œ
11+
- [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค #์–‘๊ถ๋Œ€ํšŒ](https://school.programmers.co.kr/learn/courses/30/lessons/92342?gad_source=1&gad_campaignid=22799790467&gbraid=0AAAAAC_c4nBqL5si4CBUAklMeq2-iyfsJ&gclid=CjwKCAjwhuHEBhBHEiwAZrvdcv6rZd46q5dPmEW7kLTT7QDV-M4wIY4FCcu6A_NR7SBi2aX37hZjFhoC96gQAvD_BwE): Graph / Level 2
12+
- ์ •๋‹ต ์ฝ”๋“œ: [Study_PGS_92342_์–‘๊ถ๋Œ€ํšŒ.py](Study_PGS_92342_์–‘๊ถ๋Œ€ํšŒ.py)
13+
14+
### ๐Ÿ’ป ๊ณผ์ œ
15+
- [๋ฐฑ์ค€ #๋ฌธ์ž์—ด ๊ฑฐ๋ฆฌ](https://www.acmicpc.net/problem/1230): DP / ๊ณจ๋“œ 1
16+
- ์ •๋‹ต ์ฝ”๋“œ: [Assignment_BOJ_1230_๋ฌธ์ž์—ด๊ฑฐ๋ฆฌ.py](Assignment_BOJ_1230_๋ฌธ์ž์—ด๊ฑฐ๋ฆฌ.py)
439 KB
Binary file not shown.

0 commit comments

Comments
ย (0)