λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
개발/π™‹π™§π™€π™œπ™§π™–π™’π™’π™šπ™§π™¨

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ '할인 행사' 파이썬 풀이

by beomcoder 2023. 3. 1.
728x90
λ°˜μ‘ν˜•
 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ λ§€μΉ­. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 λ§€μΉ­ λ°›μœΌμ„Έμš”.

programmers.co.kr

"""
XYZ λ§ˆνŠΈλŠ” μΌμ •ν•œ κΈˆμ•‘μ„ μ§€λΆˆν•˜λ©΄ 10일 λ™μ•ˆ νšŒμ› μžκ²©μ„ λΆ€μ—¬ν•©λ‹ˆλ‹€. 
XYZ λ§ˆνŠΈμ—μ„œλŠ” νšŒμ›μ„ λŒ€μƒμœΌλ‘œ 맀일 ν•œ κ°€μ§€ μ œν’ˆμ„ ν• μΈν•˜λŠ” 행사λ₯Ό ν•©λ‹ˆλ‹€.
ν• μΈν•˜λŠ” μ œν’ˆμ€ ν•˜λ£¨μ— ν•˜λ‚˜μ”©λ§Œ ꡬ맀할 수 μžˆμŠ΅λ‹ˆλ‹€. 
μ•Œλœ°ν•œ μ •ν˜„μ΄λŠ” μžμ‹ μ΄ μ›ν•˜λŠ” μ œν’ˆκ³Ό μˆ˜λŸ‰μ΄ ν• μΈν•˜λŠ” λ‚ μ§œμ™€ 
10일 μ—°μ†μœΌλ‘œ μΌμΉ˜ν•  κ²½μš°μ— λ§žμΆ°μ„œ νšŒμ›κ°€μž…μ„ ν•˜λ € ν•©λ‹ˆλ‹€.

(μ€‘λž΅)

μ •ν˜„μ΄κ°€ μ›ν•˜λŠ” μ œν’ˆμ„ λ‚˜νƒ€λ‚΄λŠ” λ¬Έμžμ—΄ λ°°μ—΄ want와 
μ •ν˜„μ΄κ°€ μ›ν•˜λŠ” μ œν’ˆμ˜ μˆ˜λŸ‰μ„ λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ λ°°μ—΄ number, 
XYZ λ§ˆνŠΈμ—μ„œ ν• μΈν•˜λŠ” μ œν’ˆμ„ λ‚˜νƒ€λ‚΄λŠ” λ¬Έμžμ—΄ λ°°μ—΄ discountκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, 
νšŒμ›λ“±λ‘μ‹œ μ •ν˜„μ΄κ°€ μ›ν•˜λŠ” μ œν’ˆμ„ λͺ¨λ‘ 할인 받을 수 μžˆλŠ” 
νšŒμ›λ“±λ‘ λ‚ μ§œμ˜ 총 일수λ₯Ό return ν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•˜μ‹œμ˜€.
κ°€λŠ₯ν•œ 날이 μ—†μœΌλ©΄ 0을 return ν•©λ‹ˆλ‹€.
"""

def solution(want, number, discount):
    answer, wants = 0, []
    
    for v, n in zip(want, number):
        wants += [v]*n
        
    wants = sorted(wants)
    for i in range(len(discount[:-len(wants)+1])):
        answer += int(wants == sorted(discount[i:len(wants)+i]))
            
    return answer


"""
ν• μΈμ •λ³΄μ—μ„œ λ’€λ‘œ μ›ν•˜λŠ”μ œν’ˆλ“€μ΄ μ „λΆ€ 있으면 1μ”© 더해주렀고 ν–ˆλ‹€.

- 21~22 line
μ›ν•˜λŠ” μ œν’ˆμ„ [μ œν’ˆλͺ…, 갯수] μ—μ„œ [μ œν’ˆλͺ…,μ œν’ˆλͺ…,..]으둜 λ°”κΎΈλ €κ³  ν–ˆλ‹€.
개수 λ”°λ‘œ μ œν’ˆ λ”°λ‘œλ©΄ 둜직이 더 μ–΄λ €μšΈ 것 κ°™μ•„μ„œ κ·Έλž¬λ‹€.

- 24 line
sortλ₯Ό 각각 ν•΄μ€˜μ•Ό 맀번 어디에 뭐가 μžˆλŠ”μ§€ μ°Ύμ§€ μ•Šκ³  ν†΅μœΌλ‘œ 비ꡐ할 수 μžˆλ‹€.

- 25 line
ν• μΈμ •λ³΄μ—μ„œ μ­‰ λ‚΄κ°€ μ›ν•˜λŠ” μ œν’ˆλ“€μ΄ μžˆμ–΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— μ›ν•˜λŠ” μ œν’ˆκΈΈμ΄λ§ŒνΌ 덜 검사해도 λœλ‹€.
μ–΄μ°¨ν”Ό discount[len(wants)+1:] λΆ€ν„°λŠ” λ’€λ‘œ 검사해봐야 μ œν’ˆκ°―μˆ˜ μžμ²΄κ°€ λΆ€μ‘±ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.
ex) want:['a','a','a'] / discount:['a','a','a','a']라면 
    discount[2]λΆ€ν„° 검사해봐야 μ›ν•˜λŠ” κ°œμˆ˜λŠ” 3개인데 검사할 κΈΈμ΄λŠ” 2κ°œλ°–μ— μ—†λ‹€.

- 26 line
μ›ν•˜λŠ” μ œν’ˆκ³Ό 할인정보λ₯Ό λΉ„κ΅ν•˜λ©΄ true, false둜 λ‚˜μ˜€λŠ”λ° intν˜•μœΌλ‘œ λ°”κΎΈλ©΄ 1, 0이닀.
κ·Έλž˜μ„œ κ·Έ 값을 answer에 λ”ν•˜λ©΄ λœλ‹€.
"""
728x90
λ°˜μ‘ν˜•

λŒ“κΈ€