μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- dataframe
- pandas
- μΈλμνλ§
- ν¬λ‘€λ§
- λ 립νλ³Έ
- λΉ λ°μ΄ν°λΆμκΈ°μ¬
- LDA
- datascience
- opencv
- t-test
- κ΅°μ§ν
- μ£Όμ±λΆλΆμ
- λ°μ΄ν°λΆμμ λ¬Έκ°
- PCA
- λ°μ΄ν°λΆμ
- ADsP
- ADP
- DBSCAN
- λ°μ΄ν°λΆκ· ν
- λ°μ΄ν°λΆμμ€μ λ¬Έκ°
- ν μ€νΈλΆμ
- νμ΄μ¬
- Python
- λμνλ³Έ
- μ€λ²μνλ§
- Lambda
- numpy
- iloc
- λΉ λ°μ΄ν°
- μλν΄λΌμ°λ
Data Science LAB
[Python] νλ‘κ·Έλλ¨Έμ€ μ½λ©ν μ€νΈ μ°μ΅ level 3 (λΆλ μ¬μ©μ) λ³Έλ¬Έ
[Python] νλ‘κ·Έλλ¨Έμ€ μ½λ©ν μ€νΈ μ°μ΅ level 3 (λΆλ μ¬μ©μ)
γ γ γ γ 2022. 11. 6. 15:361. λ¬Έμ μ€λͺ
κ°λ°ν λ΄μμ μ΄λ²€νΈ κ°λ°μ λ΄λΉνκ³ μλ "무μ§"λ μ΅κ·Ό μ§νλ μΉ΄μΉ΄μ€μ΄λͺ¨ν°μ½ μ΄λ²€νΈμ λΉμ μμ μΈ λ°©λ²μΌλ‘ λΉμ²¨μ μλν μλͺ¨μλ€μ λ°κ²¬νμμ΅λλ€. μ΄λ° μλͺ¨μλ€μ λ°λ‘ λͺ¨μ λΆλ μ¬μ©μλΌλ μ΄λ¦μΌλ‘ λͺ©λ‘μ λ§λ€μ΄μ λΉμ²¨ μ²λ¦¬ μ μ μΈνλλ‘ μ΄λ²€νΈ λΉμ²¨μ λ΄λΉμμΈ "νλ‘λ" μκ² μ λ¬νλ €κ³ ν©λλ€. μ΄ λ κ°μΈμ 보 보νΈμ μν΄ μ¬μ©μ μμ΄λ μ€ μΌλΆ λ¬Έμλ₯Ό '*' λ¬Έμλ‘ κ°λ €μ μ λ¬νμ΅λλ€. κ°λ¦¬κ³ μ νλ λ¬Έμ νλμ '*' λ¬Έμ νλλ₯Ό μ¬μ©νμκ³ μμ΄λ λΉ μ΅μ νλ μ΄μμ '*' λ¬Έμλ₯Ό μ¬μ©νμμ΅λλ€.
"무μ§"μ "νλ‘λ"λ λΆλ μ¬μ©μ λͺ©λ‘μ 맀νλ μλͺ¨μ μμ΄λλ₯Ό μ μ¬ μμ΄λ λΌκ³ λΆλ₯΄κΈ°λ‘ νμμ΅λλ€.
2. μ ν μ¬ν
- user_id λ°°μ΄μ ν¬κΈ°λ 1 μ΄μ 8 μ΄νμ λλ€.
- user_id λ°°μ΄ κ° μμλ€μ κ°μ κΈΈμ΄κ° 1 μ΄μ 8 μ΄νμΈ λ¬Έμμ΄μ
λλ€.
- μλͺ¨ν μ¬μ©μ μμ΄λλ€μ μλ‘ μ€λ³΅λμ§ μμ΅λλ€.
- μλͺ¨ν μ¬μ©μ μμ΄λλ μνλ²³ μλ¬Έμμ μ«μλ‘λ§μΌλ‘ ꡬμ±λμ΄ μμ΅λλ€.
- banned_id λ°°μ΄μ ν¬κΈ°λ 1 μ΄μ user_id λ°°μ΄μ ν¬κΈ° μ΄νμ λλ€.
- banned_id λ°°μ΄ κ° μμλ€μ κ°μ κΈΈμ΄κ° 1 μ΄μ 8 μ΄νμΈ λ¬Έμμ΄μ
λλ€.
- λΆλ μ¬μ©μ μμ΄λλ μνλ²³ μλ¬Έμμ μ«μ, κ°λ¦¬κΈ° μν λ¬Έμ '*' λ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
- λΆλ μ¬μ©μ μμ΄λλ '*' λ¬Έμλ₯Ό νλ μ΄μ ν¬ν¨νκ³ μμ΅λλ€.
- λΆλ μ¬μ©μ μμ΄λ νλλ μλͺ¨μ μμ΄λ μ€ νλμ ν΄λΉνκ³ κ°μ μλͺ¨μ μμ΄λκ° μ€λ³΅ν΄μ μ μ¬ μμ΄λ λͺ©λ‘μ λ€μ΄κ°λ κ²½μ°λ μμ΅λλ€.
- μ μ¬ μμ΄λ λͺ©λ‘λ€μ ꡬνμ λ μμ΄λλ€μ΄ λμ΄λ μμμ κ΄κ³μμ΄ μμ΄λ λͺ©λ‘μ λ΄μ©μ΄ λμΌνλ€λ©΄ κ°μ κ²μΌλ‘ μ²λ¦¬νμ¬ νλλ‘ μΈλ©΄ λ©λλ€.
3. λ΄ νμ΄
from itertools import product
def solution(user_id, banned_id):
answer = []
for id in banned_id:
star = []
ids = []
for i,x in enumerate(id):
if x == '*':
star.append(i)
for u_id in user_id:
if len(u_id) == len(id):
new_id = u_id
for s in star:
new_id = new_id[:s] + '*'+ new_id[s+1:]
if new_id == id:
ids.append(u_id)
answer.append(ids)
answer = list(product(*answer))
answer = [sorted(x) for x in answer if len(x) == len(set(x))]
answer = set(list(map(tuple,answer)))
return len(answer)
1. for λ¬Έμ μ¬μ©νμ¬ μ μ¬ μμ΄λλ€μ *μ μμΉλ₯Ό 리μ€νΈλ‘ μμ±
2. μ μ ID μ€ μ μ¬ IDμ κΈΈμ΄κ° κ°μ IDλ§ *μ μμΉ λ¦¬μ€νΈλ₯Ό μ΄μ©νμ¬ *λ‘ λ³νν¨
3. μλ‘ μμ±λ μ μ ID(*λ‘ λ³ν)μ΄ μ μ¬ IDμ λμΌνλ©΄ 리μ€νΈμ μΆκ° -> λͺ¨λ μ μ¬ μμ΄λλ€ λ°λ³΅
4. μ΅μ’ μ μΌλ‘ κ° μ μ¬ μμ΄λ λ³ λ§€νλ μ μ μμ΄λλ€μ΄ λ΄κΈ΄ 리μ€νΈ μμ±
5. product() ν¨μλ₯Ό μ¬μ©νμ¬ μ‘°ν© μμ± (answer)
6. κ° μ‘°ν© μ€ μ€λ³΅λ μμκ° μλ μ‘°ν© μ κ±°
7. μ΅μ’ μ νλ μ‘°ν© μ€ μ€λ³΅ μ κ±° (μμ μκ΄μμΌλ―λ‘ sorted()ν¨μ μ¬μ©ν΄ μ λ ¬)
8. μ΅μ’ 리μ€νΈμ 리μ€νΈ κΈΈμ΄λ₯Ό λ°ν
μ¬μ€ κ°λ
μ±μ΄ λ§μ΄ μ’μ§λ μμ κ² κ°μμ μκ° μ¬μ λ λ λ κ³ λ―Όν΄ λ΄μΌκ² λ€...
4. λ€λ₯Έ μ¬λμ νμ΄
from itertools import product
def check(str1, str2):
if len(str1) != len(str2):
return False
for i in range(len(str1)):
if str1[i] == "*":
continue
if str1[i] != str2[i]:
return False
return True
def solution(user_id, banned_id):
answer = set()
result = [[] for i in range(len(banned_id))]
for i in range(len(banned_id)):
for u in user_id:
if check(banned_id[i], u):
result[i].append(u)
result = list(product(*result))
for r in result:
if len(set(r)) == len(banned_id):
answer.add("".join(sorted(set(r))))
return len(answer)
1. μμ΄λκ° λμΌνμ§ μ¬λΆλ₯Ό λ°ννλ ν¨μ μμ±
1) λ λ¬Έμμ΄μ κΈΈμ΄κ° λ€λ₯΄λ©΄ False
2) for λ¬Έμ μ¬μ©νμ¬ μ²«λ²μ§Έ λ¬Έμμ΄ μ€ '*'μ΄ λμ€λ©΄ continue, λ κΈμλΌ μ€ νκΈμλΌλ λ€λ₯΄λ©΄ False λ°ν
2. answerμ set()μΌλ‘ μ μΈ
3. κ²°κ³Όκ°μ λ°λ 2μ°¨μ 리μ€νΈλ₯Ό banned_listμ κΈΈμ΄λ§νΌ μμ±
4. forλ¬Έμ μ¬μ©νμ¬ μ μ¬ IDλ³ μμ μ μΈν ν¨μκ° Trueμ΄λ©΄ user_idλ₯Ό result 리μ€νΈμ μΆκ°
5. forλ¬Έμ μ¬μ©νμ¬ 2μ°¨μ 리μ€νΈ λ΄μμ μ€λ³΅λ 리μ€νΈ μ κ±° ν 리μ€νΈ κΈΈμ΄ λ°ν