-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path222.py
More file actions
144 lines (128 loc) · 3.61 KB
/
222.py
File metadata and controls
144 lines (128 loc) · 3.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
info = ["java backend junior pizza 150","python frontend senior chicken 210","python frontend senior chicken 150","cpp backend senior pizza 260","java backend junior chicken 80","python backend senior chicken 50"]
query = ["java and backend and junior and pizza 100","python and frontend and senior and chicken 200","cpp and - and senior and pizza 250","- and backend and senior and - 150","- and - and - and chicken 100","- and - and - and - 150"]
def solution(info, query):
answer = []
# 언어 직군 경력 소울푸드 점수
# 1. 나눠서 저장
info2 = []
for i in range(len(info)):
info2.append(info[i].split())
info2.sort()
for i in range(len(info2)):
k = info2[i]
if k[0][0]=='j':
k[0] = 'J'
elif k[0][0] == 'p':
k[0] = 'P'
elif k[0][0] =='c':
k[0] = 'C'
if k[1][0]=='b':
k[1] = 'B'
elif k[1][0] == 'f':
k[1] = 'F'
if k[2][0] == 'j':
k[2] = 'U'
elif k[2][0]=='s':
k[2] = 'S'
if k[3][0] == 'c':
k[3] = 'H'
elif k[3][0] == 'p':
k[3] = 'Z'
ldict=[
'CBUH',
'CBUZ',
'CBSH',
'CBSZ',
'CFUH',
'CFUZ',
'CFSH',
'CFSZ',
'JBUH',
'JBUZ',
'JBSH',
'JBSZ',
'JFUH',
'JFUZ',
'JFSH',
'JFSZ',
'PBUH',
'PBUZ',
'PBSH',
'PBSZ',
'PFUH',
'PFUZ',
'PFSH',
'PFSZ'
]
mdict={}
bi = []
for i in range(len(ldict)):
a = 0
for j in range(4):
a+=1<<ord(ldict[i][j])-63
mdict[a]=[]
bi.append(a)
for i in range(len(info2)):
a=0
for j in range(4):
a+=1<<ord(info2[i][j])-63
mdict[a].extend([int(info2[i][4])])
q2 = []
for i in range(len(query)):
q2.append(query[i].split(' and '))
st = q2[i][-1]
a,b = st.split()
q2[i][-1]=a
q2[i].append(b)
for i in range(len(q2)):
k = q2[i]
if k[0][0] !='-':
if k[0][0]=='j':
k[0] = 'J'
elif k[0][0] == 'p':
k[0] = 'P'
elif k[0][0] =='c':
k[0] = 'C'
if k[1][0] !='-':
if k[1][0]=='b':
k[1] = 'B'
elif k[1][0] == 'f':
k[1] = 'F'
if k[2][0] !='-':
if k[2][0] == 'j':
k[2] = 'U'
elif k[2][0]=='s':
k[2] = 'S'
if k[3][0] !='-':
if k[3][0] == 'c':
k[3] = 'H'
elif k[3][0] == 'p':
k[3] = 'Z'
q3=[]
for i in range(len(q2)):
st = ''.join(q2[i][:4])
q3.append([st,int(q2[i][4])])
for i in range(len(mdict)):
for j in range(len(bi)):
if len(mdict[bi[j]])>0:
mdict[bi[j]].sort(reverse=True)
# mdict[bi[j]].sort()
for i in range(len(q3)):
a=0
cnt=0
for j in range(4):
if q3[i][0][j]!='-':
a+=1<<ord(q3[i][0][j])-63
for j in range(len(bi)):
if bi[j] & a == a:
aList = mdict[bi[j]]
if len(aList)==0:
continue
for k in range(len(aList)):
if aList[k]>=q3[i][1]:
cnt+=1
else:
break
answer.append(cnt)
return answer
print(solution(info,query))