Skip to content

Commit f221616

Browse files
authored
Merge pull request #46 from zaqquum/main
김홍주/ 7월 4주차/ 3개
2 parents 6e77873 + 1109ef9 commit f221616

File tree

4 files changed

+144
-0
lines changed

4 files changed

+144
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"""
2+
6/range(1,45+1)
3+
최고 순위, 최저 순위
4+
1. 알수 없는 번호 개수: 0의 개수 => unknown_n
5+
2. 최저 순위 = 6- (1개,0개 == 0 개로 취급, 현재 맞는 개수)
6+
3. 최고 순위 = 6- 현재 맞은 개수
7+
"""
8+
def solution(lottos, win_nums):
9+
answer = []
10+
#1. 0의 개수
11+
correct= 0 ; unknown = 0
12+
#2. 알수 없는 개수, ,현재 맞은 개수
13+
for i in range(len(lottos)):
14+
if lottos[i] == 0 :
15+
unknown += 1
16+
elif lottos[i] in win_nums :
17+
win_nums.remove(lottos[i])
18+
correct+=1
19+
#3. 순위 = 7- 맞은 개수(1개 맞은 개수 == 0개 맞은 개수 = 1로 취급)
20+
for c in [correct+unknown,correct] :
21+
if c == 0 :
22+
c= 1
23+
rank = 7-c
24+
answer.append(rank)
25+
return answer
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
from collections import deque
2+
import copy
3+
def solution(bridge_length, weight, truck_weights):
4+
answer = 0
5+
t=0
6+
run_truck = deque() # bride 올라간 weight
7+
timeline = [[0] for _ in range(len(truck_weights))]
8+
finish =[]
9+
# 통과 조건(bridge에 있는 시간 >= bridge_length)
10+
print(len(timeline))
11+
i=0 # new truck 번호
12+
while len(finish) <= len(truck_weights)and t<len(truck_weights):
13+
t+=1 ;
14+
#2. 나가기
15+
if t==1:
16+
run_truck.append(i)
17+
timeline[i] = 1
18+
continue
19+
for r in copy.deepcopy(run_truck) :
20+
if timeline[r] > bridge_length : #내보내기
21+
run_truck.popleft()
22+
finish.append(r)
23+
print(f"out {r} ,t={timeline[r]} , run : {run_truck}")
24+
else : #충족 x
25+
timeline[r] += 1
26+
print("# , run_truck", run_truck)
27+
28+
#1. bridge 무게 조건
29+
now_weight = 0
30+
for j in copy.deepcopy(run_truck):
31+
now_weight += truck_weights[j]
32+
if now_weight + truck_weights[i] <= weight: # 올라감
33+
run_truck.append(i)
34+
timeline[i] = 1
35+
36+
return answer

Hongjoo/lv2/디펜스게임.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
def defend(use_k,n,k,enemy_i):
2+
if use_k : # use_k true
3+
return n ,k-1
4+
else : # no uese_k
5+
return n-enemy_i, k
6+
7+
def solution(n, k, enemy):
8+
answer = 0
9+
graph = [[] for _ in range(len(enemy)+1)]
10+
graph[0] =[[n,k]]
11+
#매 i 라운드 별로
12+
for i in range(len(enemy)) :
13+
# print("길이:",len(graph[i]))
14+
if len(graph[i]) == 0 : # 길이 0(중간에 끝나는 경우)
15+
# print(i-1)
16+
return i-1
17+
for r in graph[i]:
18+
input_n = r[0] ; left_k= r[1]
19+
#1-1 use k /no use k -> [남은 n, 남은 k]
20+
for use_k in [0,1]:
21+
x,y = defend(use_k,input_n,left_k,enemy[i])
22+
if x>=0 and y>=0 :
23+
graph[i+1].append([x,y])
24+
# print(f"{i+1}라운드: {[x,y]} =>{graph[i+1]}")
25+
#모든 라운드 통과
26+
answer = len(enemy)
27+
return answer
28+
29+
30+
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
"""
2+
시작 1 ~ N번 node , road : m 개 (cost=1)
3+
최단거리= k인
4+
-> 다익스트라? ....BFS 감사합니다 ㅎ
5+
<BFS>
6+
0. 인접 리스트 graph 정의 , 시작 노드 queue 넣기 & 방문 등록
7+
1.queue 가 빌때 까지
8+
queue에서 꺼낸 n 과 인접한 노드 중 방문 안한 노드
9+
-> queue 넣고 방문 등록
10+
없으면 :
11+
-> queue에서 빼기
12+
13+
=> cost = level : start ~ 거리
14+
"""
15+
import sys
16+
from collections import deque
17+
18+
n, m, k, start = map(int, sys.stdin.readline().split())
19+
#0.graph 정의
20+
INF = 300001
21+
graph = [[] for _ in range(n+1)]
22+
cost= [INF]*(n+1) # 최단 거리 graph
23+
visited=[False]*(n+1)
24+
for _ in range(m):
25+
a,b = map(int, sys.stdin.readline().split())
26+
graph[a].append(b)
27+
28+
# print(graph)
29+
#2 BFS
30+
queue = deque([start])
31+
visited[start] = True
32+
cost[start] = 0
33+
answer =list()
34+
35+
while queue :
36+
now = queue.popleft()
37+
38+
for n in graph[now] :
39+
40+
if not visited[n] :
41+
queue.append(n)
42+
visited[n] = True
43+
cost[n] = cost[now] + 1
44+
if cost[n] == k :
45+
answer.append(n)
46+
# 출력
47+
if len(answer)== 0 :
48+
print(-1)
49+
else :
50+
answer.sort()
51+
for a in answer:
52+
print(a)
53+

0 commit comments

Comments
 (0)