Skip to content

Commit d7b81e6

Browse files
authored
kakao (#75)
1 parent f2fb5d8 commit d7b81e6

File tree

5 files changed

+200
-0
lines changed

5 files changed

+200
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
s = "one4seveneight"
2+
3+
dictionary = {}
4+
dictionary['one']=1
5+
dictionary['two']=2
6+
dictionary['three']=3
7+
dictionary['four']=4
8+
dictionary['five']=5
9+
dictionary['six']=6
10+
dictionary['seven']=7
11+
dictionary['eight']=8
12+
dictionary['nine']=9
13+
dictionary['zero']=0
14+
15+
def solution(s):
16+
answer = ''
17+
18+
length = len(s)
19+
chk = ''
20+
for i in range(length):
21+
if s[i].isdigit():
22+
answer+=s[i]
23+
else:
24+
chk+=s[i]
25+
if chk in dictionary.keys():
26+
answer+=str(dictionary[chk])
27+
chk = ''
28+
29+
return int(answer)
30+
31+
print(solution(s))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
places = [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPXX", "OXXXP", "POOXX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]]
2+
3+
from collections import deque
4+
5+
dx = [0,0,1,-1]
6+
dy = [1,-1,0,0]
7+
8+
def men_distance(r1,r2,c1,c2):
9+
return abs(r1-c1)+abs(c2-r2)
10+
11+
def check_men(distance):
12+
if distance<=2:
13+
return False
14+
else:
15+
return True
16+
17+
def bfs(a,b,visited,maps):
18+
q = deque()
19+
q.append((a,b,0))
20+
visited[a][b]=True
21+
while q:
22+
row,col,dist = q.popleft()
23+
24+
for i in range(4):
25+
r = row+dx[i]
26+
c = col+dy[i]
27+
if 0<=r<5 and 0<=c<5 and not visited[r][c] and maps[r][c]!='X':
28+
if maps[r][c]=='P':
29+
if not check_men(dist+1):
30+
return 1
31+
q.append((r,c,dist+1))
32+
visited[r][c]=True
33+
34+
return 0
35+
36+
37+
38+
def solution(places):
39+
answer = []
40+
41+
for place in places:
42+
maps = [list(map(str,list(p))) for p in place]
43+
cnt = 0
44+
for i in range(5):
45+
for j in range(5):
46+
if maps[i][j]=='P':
47+
visited = [[False]*5 for k in range(5)]
48+
cnt += bfs(i,j,visited,maps)
49+
if cnt==0:
50+
answer.append(1)
51+
else:
52+
answer.append(0)
53+
54+
55+
return answer
56+
57+
print(solution(places))

‎syheo/codingTest1/2021kakao_internship/3.py

Whitespace-only changes.
+112
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
# n = 3
2+
# start = 1
3+
# end = 3
4+
# roads = [[1, 2, 2], [3, 2, 3]]
5+
# traps = [2]
6+
n=4
7+
start =1
8+
end = 4
9+
roads = [[1, 2, 1], [3, 2, 1], [2, 4, 1]]
10+
traps = [2, 3]
11+
12+
INF = int(1e9)
13+
14+
from collections import deque
15+
import heapq
16+
17+
def change_direction2(target,graph,n):
18+
changed_graph = graph[:]
19+
appendList = []
20+
for i in range(len(changed_graph)):
21+
info = changed_graph[i]
22+
if info[0]==target or info[1]==target:
23+
changed_graph[i]=(info[1],info[0],info[2])
24+
return changed_graph
25+
26+
def change_direction(target,graph,n):
27+
changed_graph = graph[:]
28+
changedList = []
29+
for i in range(len(changed_graph[target])):
30+
info = changed_graph[target][i]
31+
if info[2]==1:
32+
changed_graph[target][i]=(info[0],info[1],-1)
33+
elif info[2]==-1:
34+
changed_graph[target][i]=(info[0],info[1],1)
35+
changedList.append(info[0])
36+
37+
for i in changedList:
38+
for j in range(len(changed_graph[i])):
39+
info = changed_graph[i][j]
40+
if info[0]==target:
41+
if info[2]==1:
42+
changed_graph[i][j]=(info[0],info[1],-1)
43+
elif info[2]==-1:
44+
changed_graph[i][j]=(info[0],info[1],1)
45+
changedList.append(info[0])
46+
47+
return changed_graph
48+
49+
def dijkstra(start,end,traps,graph,n,distances):
50+
q = []
51+
heapq.heappush(q,(0,start,graph[:]))
52+
distances[start].append(0)
53+
while q:
54+
dist, now ,changed_graph = heapq.heappop(q)
55+
if min(distances[now]) < dist:
56+
continue
57+
for i in changed_graph[now]:
58+
if i[2]==1:
59+
cost = dist + i[1]
60+
tmp_dst = distances[i[0]][now]
61+
if cost < tmp_dst:
62+
distances[i[0]][now]=cost
63+
if i[0] in traps:
64+
heapq.heappush(q,(cost,i[0],change_direction(i[0],changed_graph,n)))
65+
else:
66+
heapq.heappush(q,(cost,i[0],change_direction(i[0],changed_graph,n)))
67+
68+
69+
def bfs(start,end,traps,graph,n):
70+
q = deque()
71+
cntList = []
72+
#start,end,cost
73+
q.append((start,end,0,graph[:],''))
74+
while q:
75+
a,b,cost,change_map,visited = q.popleft()
76+
for info in change_map[a]:
77+
#print(a,b,cost,change_map,visited)
78+
if str(a)+str(info[0]) not in visited and info[2]==1:
79+
v = info[0]
80+
c = info[1]
81+
if v==end:
82+
return cost+c
83+
else:
84+
if v in traps:
85+
q.append((v,end,cost+c,change_direction(v,change_map,n),visited+str(v)))
86+
else:
87+
q.append((v,end,cost+c,change_map,visited+str(v)))
88+
89+
return min(cntList)
90+
91+
92+
93+
def solution(n, start, end, roads, traps):
94+
graph = [[] for i in range(n+1)]
95+
distance = [[INF for _ in range(n+1)] for i in range(n+1)]
96+
distances = [[ INF for i in range(n+1)] for _ in range(n+1)]
97+
98+
#visited = [[[False for j in range(n+1)] for i in range(n+1)] for _ in range(n+1)]
99+
for road in roads:
100+
#1-> , -1<-
101+
if distance[road[0]][road[1]]>road[2]:
102+
graph[road[0]].append((road[1],road[2],1))
103+
distance[road[0]][road[1]]=road[2]
104+
graph[road[1]].append((road[0],road[2],-1))
105+
distance[road[1]][road[0]]=road[2]
106+
#다익스트라 알고리즘 수행
107+
dijkstra(start,end,traps,graph,n,distances)
108+
print(distances)
109+
return min(distances[end])
110+
111+
112+
print(solution(n,start,end,roads,traps))

‎syheo/codingTest1/2021kakao_internship/5.py

Whitespace-only changes.

0 commit comments

Comments
 (0)