생각보다 문제들은 어려웠고.. 알고리즘을 많이 알게되면 풀어낼 수 있을 것같다는 생각이 들어 계속 공부를 하면 점점 문제를 풀어낼 수 있을 꺼라는 자신감 혹은 자만감 생기게 되었다.
'one4twothree' --> 1423
'1234' --> 1234
로 변환하는 문제가 나왔다.
def solution(s):
num_dict = {
0 :'zero',
1 : 'one',
2 : 'two',
3 : "three",
4 : 'four',
5 : 'five',
6 : 'six',
7 : 'seven',
8 : 'eight',
9 : 'nine'
}
for i, value in num_dict.items():
if s.find(value) != -1:
s =s.replace(value, str(i))
answer = int(s)
return answer
방역과 관련된 문제가 나왔고,
방역은 0% 혹은 100%로 나뉠 수 있는데
5X5 배열의 시험장에 사람들이 앉을 경우
맨허튼 거리가 2이하일 경우
1일땐 방역이 0으로 실패
2일땐 배치에 따라 방역의 성공이 달라지는 형식이였다.
자세한 사항은 나중에 문제가 나오면..
def manhattan_distance(pt1, pt2):
distance = 0
for i in range(len(pt1)):
distance += abs(pt1[i] - pt2[i])
return distance
def check_Quarantine(place):
from itertools import combinations
spot_list = []
for x, i in enumerate(place):
for y, j in enumerate(i):
if j == 'P':
spot_list.append((x,y))
for i in combinations(spot_list,2):
x,y = i
if manhattan_distance(x,y) ==1 :
return 2
break
elif manhattan_distance(x,y) ==2 :
if x[0] == y[0] :
if place[x[0]][int((x[1]+y[1])/2)] =='X':
pass
else :
return 2
elif x[1] ==y[1]:
if place[int((x[0]+y[0])/2)][x[1]] =='X':
pass
else :
return 2
# 대각선 상
else:
if (place[y[0]][x[1]] != 'X') or place[x[0]][y[1]] !='X':
return 2
def solution(places):
result=[]
for place in places:
s = check_Quarantine(place)
if s is None:
s = 1
else:
s = 0
result.append(s)
return result
[coding_test]체육복 (0) | 2021.05.11 |
---|---|
[coding_test]모의고사 (0) | 2021.05.11 |
[coding_test]내적 (0) | 2021.05.10 |
[coding_test]폰켓몬 (0) | 2021.05.08 |
[coding_test]소수 만들기 (0) | 2021.05.08 |