π νμ΄μ¬ μΌλ‘ νμ΄
π λ¬Έμ λ§ν¬ :
νλ‘κ·Έλλ¨Έμ€
μ½λ μ€μ¬μ κ°λ°μ μ±μ©. μ€ν κΈ°λ°μ ν¬μ§μ λ§€μΉ. νλ‘κ·Έλλ¨Έμ€μ κ°λ°μ λ§μΆ€ν νλ‘νμ λ±λ‘νκ³ , λμ κΈ°μ κΆν©μ΄ μ λ§λ κΈ°μ λ€μ λ§€μΉ λ°μΌμΈμ.
programmers.co.kr
π λ¬Έμ μ€λͺ :
μ μ μ¬μ 무μ§λ κ²μν λΆλ μ΄μ©μλ₯Ό μ κ³ νκ³ μ²λ¦¬ κ²°κ³Όλ₯Ό λ©μΌλ‘ λ°μ‘νλ μμ€ν μ κ°λ°νλ € ν©λλ€. 무μ§κ° κ°λ°νλ €λ μμ€ν μ λ€μκ³Ό κ°μ΅λλ€.
- κ° μ μ λ ν λ²μ ν λͺ
μ μ μ λ₯Ό μ κ³ ν μ μμ΅λλ€.
- μ κ³ νμμ μ νμ μμ΅λλ€. μλ‘ λ€λ₯Έ μ μ λ₯Ό κ³μν΄μ μ κ³ ν μ μμ΅λλ€.
- ν μ μ λ₯Ό μ¬λ¬ λ² μ κ³ ν μλ μμ§λ§, λμΌν μ μ μ λν μ κ³ νμλ 1νλ‘ μ²λ¦¬λ©λλ€.
- kλ² μ΄μ μ κ³ λ μ μ λ κ²μν μ΄μ©μ΄ μ μ§λλ©°, ν΄λΉ μ μ λ₯Ό μ κ³ ν λͺ¨λ μ μ μκ² μ μ§ μ¬μ€μ λ©μΌλ‘ λ°μ‘ν©λλ€.
- μ μ κ° μ κ³ ν λͺ¨λ λ΄μ©μ μ·¨ν©νμ¬ λ§μ§λ§μ νκΊΌλ²μ κ²μν μ΄μ© μ μ§λ₯Ό μν€λ©΄μ μ μ§ λ©μΌμ λ°μ‘ν©λλ€.
λ€μμ μ 체 μ μ λͺ©λ‘μ΄ ["muzi", "frodo", "apeach", "neo"]μ΄κ³ , k = 2(μ¦, 2λ² μ΄μ μ κ³ λΉνλ©΄ μ΄μ© μ μ§)μΈ κ²½μ°μ μμμ λλ€.

κ° μ μ λ³λ‘ μ κ³ λΉν νμλ λ€μκ³Ό κ°μ΅λλ€.

μ μμμμλ 2λ² μ΄μ μ κ³ λΉν "frodo"μ "neo"μ κ²μν μ΄μ©μ΄ μ μ§λ©λλ€. μ΄λ, κ° μ μ λ³λ‘ μ κ³ ν μμ΄λμ μ μ§λ μμ΄λλ₯Ό μ 리νλ©΄ λ€μκ³Ό κ°μ΅λλ€.

λ°λΌμ "muzi"λ μ²λ¦¬ κ²°κ³Ό λ©μΌμ 2ν, "frodo"μ "apeach"λ κ°κ° μ²λ¦¬ κ²°κ³Ό λ©μΌμ 1ν λ°κ² λ©λλ€.
μ΄μ©μμ IDκ° λ΄κΈ΄ λ¬Έμμ΄ λ°°μ΄ id_list, κ° μ΄μ©μκ° μ κ³ ν μ΄μ©μμ ID μ λ³΄κ° λ΄κΈ΄ λ¬Έμμ΄ λ°°μ΄ report, μ μ§ κΈ°μ€μ΄ λλ μ κ³ νμ kκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, κ° μ μ λ³λ‘ μ²λ¦¬ κ²°κ³Ό λ©μΌμ λ°μ νμλ₯Ό λ°°μ΄μ λ΄μ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
π μ ν μ¬ν
- 2 ≤ id_listμ κΈΈμ΄ ≤ 1,000
- 1 ≤ id_listμ μμ κΈΈμ΄ ≤ 10
- id_listμ μμλ μ΄μ©μμ idλ₯Ό λνλ΄λ λ¬Έμμ΄μ΄λ©° μνλ²³ μλ¬Έμλ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
- id_listμλ κ°μ μμ΄λκ° μ€λ³΅ν΄μ λ€μ΄μμ§ μμ΅λλ€.
- 1 ≤ reportμ κΈΈμ΄ ≤ 200,000
- 3 ≤ reportμ μμ κΈΈμ΄ ≤ 21
- reportμ μμλ "μ΄μ©μid μ κ³ νid"ννμ λ¬Έμμ΄μ λλ€.
- μλ₯Ό λ€μ΄ "muzi frodo"μ κ²½μ° "muzi"κ° "frodo"λ₯Ό μ κ³ νλ€λ μλ―Έμ λλ€.
- idλ μνλ²³ μλ¬Έμλ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
- μ΄μ©μidμ μ κ³ νidλ 곡백(μ€νμ΄μ€)νλλ‘ κ΅¬λΆλμ΄ μμ΅λλ€.
- μκΈ° μμ μ μ κ³ νλ κ²½μ°λ μμ΅λλ€.
- 1 ≤ k ≤ 200, kλ μμ°μμ λλ€.
- return νλ λ°°μ΄μ id_listμ λ΄κΈ΄ id μμλλ‘ κ° μ μ κ° λ°μ κ²°κ³Ό λ©μΌ μλ₯Ό λ΄μΌλ©΄ λ©λλ€.
π μ μΆλ ₯ μ

μΆμΈ‘)
μ κ³ λΉνλ κ±°λμ μκ΄μμ΄ μ κ³ λμμ΄ μ μ§ λ¬μλ μ κ³ ν μ¬λλ€μκ²λ§ μ²λ¦¬ κ²°κ³Ό λ©μΌμ 보λ κ·Έλ¦¬κ³ κ·Έ μλ§ μΉ΄μ΄ν
λ°λΌμ μ κ³ λμμλ₯Ό κΈ°μ€μΌλ‘ μ κ³ μλ₯Ό μ μ₯νκ³ , μ κ³ λμμ μ€μ μ μ§λμμλ₯Ό μΆλ €λ΄μ΄ κ·Έ μ¬λμ μ κ³ ν μ¬λλ€μ λͺ¨λ λ°°μ΄λ‘ μ 리νλ€(μμ μκ΄μμ΄).
κ·Έ λ°°μ΄μμμ idλ§λ€ λ©μΌ λ°μ νμλ₯Ό id μμλλ‘ μ λ¦¬ν΄ λ°°μ΄λ‘ 리ν΄!
**** κ°μ μ¬λμ΄ μ κ³ ν λΆλΆμ λν΄ μ κ²½μΈκ²!
μμ€μ½λ)
* 1μ°¨) μ νλ λ¨ 8.3μ λλ₯΄λ₯΄
def solution(id_list, report, k):
mail_receivers = []
result = [ 0 for one in id_list ]
declare_dict = {}
for one in report:
declare_from, declare_to = one.split(" ")
if declare_to in declare_dict :
declare_dict.get(declare_to).append(declare_from)
else :
declare_dict[declare_to] = [declare_from]
for key, value in declare_dict.items() :
value_list = list(set(value))
if len(value_list) >= k :
for one in value :
mail_receivers.append(one)
for receiver in mail_receivers :
for i in range(len(id_list)) :
if receiver == id_list[i] :
result[i] += 1
return result
*2μ°¨) μ€ν¨ : λ¨ νλμ μκ°μ΄κ³Ό γ
def declaration(id_list, report, k):
mail_receivers = []
result = [ 0 for one in id_list ]
declare_dict = {}
for one in report:
declare_from, declare_to = one.split(" ") # μ κ³ μμ μ κ³ λμμ λλ
if declare_to in declare_dict : # μ κ³ λ΄μ νμΈ
if declare_from not in declare_dict[declare_to] : # λμΌν μ κ³ μλ μ μΈ
declare_dict.get(declare_to).append(declare_from) # μ κ³ μ λ°°μ΄ κ°μ Έμμ μΆκ°
else :
declare_dict[declare_to] = [declare_from]
for key, value in declare_dict.items() :
if len(value) >= k :
for one in value :
mail_receivers.append(one)
for receiver in mail_receivers :
for i in range(len(id_list)) :
if receiver == id_list[i] :
result[i] += 1
return result
*3μ°¨) μ±κ³΅
def solution(id_list, report, k):
declare_dict = {}
for one in report:
declare_from, declare_to = one.split(" ") # μ κ³ μμ μ κ³ λμμ λλ
if declare_to in declare_dict : # μ κ³ λ΄μ νμΈ
if declare_from not in declare_dict[declare_to] : # λμΌν μ κ³ μλ μ μΈ
declare_dict.get(declare_to).append(declare_from) # μ κ³ μ λ°°μ΄ κ°μ Έμμ μΆκ°
else :
declare_dict[declare_to] = [declare_from]
mail_receivers = []
for key, value in declare_dict.items() :
if len(value) >= k :
mail_receivers.extend(value)
result = []
for id in id_list :
result.append(mail_receivers.count(id))
return result
리뷰)
1μ°¨ νΌλλ°±)
μ κ³ λμμ ν€λ‘ λ§λ€κ³ μ κ³ μλ₯Ό λ°°μ΄λ‘ λ§λ€μ΄ λ§΅νμμΌ°λλ°, μ€κ°μ μ κ³ μ λ°°μ΄μμ μ κ³ λμμ μ°Ύλ μ€μλ₯Ό ;
κ·Έλ¦¬κ³ κ°μ μ¬λμ΄ μ¬λ¬λ² μ κ³ νμ λμ μ²λ¦¬λ ν΄μ£Όμ§ λͺ»ν¨.
2μ°¨ νΌλλ°±)
ν건μ μκ° μ΄κ³Όκ° μλλ° λ©μΌλ¦¬μλ² μ 리ν λ forλ¬Έμ λλ €μ appendνκ±°λ³΄λ€ extendλ‘ νλ°©μ λΆμ΄λ μκ° μ΄κ³Ό ν΄κ²°νλ€!
'Coding Test > Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| Programmers] μΌμ΄μ¬ (0) | 2023.02.23 |
|---|---|
| Programmers] κ°μΈμ 보 μμ§ μ ν¨κΈ°κ° (0) | 2023.02.22 |
| Programmers] λλ§μ μνΈ (0) | 2023.02.21 |
| Programmers] μ½λΌ λ¬Έμ (0) | 2023.02.13 |
| Programmers] μΉμμ΄ (2) (0) | 2023.02.13 |
