Coding/Code in the Morning

220105_Code in the morning

κΉ€μœ λ‹ˆμ½˜ 2022. 1. 5. 15:04

Code in the morning, 맀일 μ•„μΉ¨ μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό ν’‰λ‹ˆλ‹€. 

πŸ’¬ 문제 μ„€λͺ…: μ˜ˆμ‚°

Sμ‚¬μ—μ„œλŠ” κ° λΆ€μ„œμ— ν•„μš”ν•œ λ¬Όν’ˆμ„ μ§€μ›ν•΄ μ£ΌκΈ° μœ„ν•΄ λΆ€μ„œλ³„λ‘œ λ¬Όν’ˆμ„ κ΅¬λ§€ν•˜λŠ”데 ν•„μš”ν•œ κΈˆμ•‘을 μ‘°μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜, μ „체 μ˜ˆμ‚°μ΄ μ •ν•΄μ Έ μžˆκΈ° λ•Œλ¬Έμ— λͺ¨λ“  λΆ€μ„œμ˜ λ¬Όν’ˆμ„ κ΅¬λ§€ν•΄ μ€„ μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μ΅œλŒ€ν•œ λ§Žμ€ λΆ€μ„œμ˜ λ¬Όν’ˆμ„ κ΅¬λ§€ν•΄ μ€„ μˆ˜ μžˆλ„둝 ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

λ¬Όν’ˆμ„ κ΅¬λ§€ν•΄ μ€„ λ•ŒλŠ” κ° λΆ€μ„œκ°€ μ‹ μ²­ν•œ κΈˆμ•‘λ§ŒνΌμ„ λͺ¨λ‘ μ§€μ›ν•΄ μ€˜μ•Ό ν•©λ‹ˆλ‹€. μ˜ˆλ₯Ό λ“€μ–΄ 1,000원을 μ‹ μ²­ν•œ λΆ€μ„œμ—λŠ” μ •ν™•νžˆ 1,000원을 μ§€μ›ν•΄μ•Ό ν•˜λ©°, 1,000원보닀 μ μ€ κΈˆμ•‘을 μ§€μ›ν•΄ μ€„ μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.

λΆ€μ„œλ³„λ‘œ μ‹ μ²­ν•œ κΈˆμ•‘이 λ“€μ–΄μžˆλŠ” λ°°μ—΄ d와 μ˜ˆμ‚° budget이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, μ΅œλŒ€ λͺ‡ κ°œμ˜ λΆ€μ„œμ— λ¬Όν’ˆμ„ μ§€μ›ν•  μˆ˜ μžˆλŠ”지 return ν•˜λ„둝 solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

 

 

πŸ“ μ œν•œ 사항

  • dλŠ” λΆ€μ„œλ³„λ‘œ μ‹ μ²­ν•œ κΈˆμ•‘μ΄ λ“€μ–΄μžˆλŠ” 배열이며, 길이(전체 λΆ€μ„œμ˜ 개수)λŠ” 1 이상 100 μ΄ν•˜μž…λ‹ˆλ‹€.
  • d의 각 μ›μ†ŒλŠ” λΆ€μ„œλ³„λ‘œ μ‹ μ²­ν•œ κΈˆμ•‘μ„ λ‚˜νƒ€λ‚΄λ©°, λΆ€μ„œλ³„ μ‹ μ²­ κΈˆμ•‘μ€ 1 이상 100,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.
  • budget은 μ˜ˆμ‚°μ„ λ‚˜νƒ€λ‚΄λ©°, 1 이상 10,000,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.

 

 

πŸ’‘ λ‚˜μ˜ 풀이 

def solution(d, budget):

	#μ˜ˆμ‚°μ΄ λͺ¨λ“  λΆ€μ„œλ₯Ό 지원할 수 μžˆλŠ” 경우 	
    num_of_dept = 0
    if sum(d) <= budget:
        return(len(d))
    
    #μ˜ˆμ‚°μ΄ λͺ¨λ“  λΆ€μ„œλ₯Ό 지원할 수 μ—†λŠ” 경우   
    if sum(d) > budget: 
        d.sort()  #ν•„μš”ν•œ μ˜ˆμ‚° μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬
        bud_dept = [] #지원받을 수 μžˆλŠ” λΆ€μ„œ 
        sum_i = 0 #μ§€μ›ν•œ κΈˆμ•‘
        for i in d: 
            if i <= budget-sum_i:  #μ•ž λΆ€μ„œλ₯Ό μ§€μ›ν•˜κ³  남은 κΈˆμ•‘μ΄ κ·Έ λ‹€μŒλΆ€μ„œκ°€ ν•„μš”ν•œ κΈˆμ•‘λ³΄λ‹€ ν¬κ±°λ‚˜ κ°™λ‹€λ©΄
                bud_dept.append(i) #κ·Έ λΆ€μ„œλ„ 지원 κ°€λŠ₯
                sum_i = sum_i + i
        return(len(bud_dept))

 

 

πŸ’‘ λ‹€λ₯Έ ν•΄μ„€

def solution(d, budget):
    d.sort()
    while budget < sum(d):
        d.pop()
    return len(d)

while문으둜 μ—„μ²­ μ‰½κ²Œ λŒλ¦¬λ„€.. 

πŸ‘‰πŸ» 문제 λ°”λ‘œκ°€κΈ° 

 

 

 


 

 

Code in the morning, 맀일 μ•„μΉ¨ μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό ν’‰λ‹ˆλ‹€.&amp;nbsp;

πŸ’¬ 문제 μ„€λͺ…: 체윑볡

μ μ‹¬μ‹œκ°„μ— λ„둑이 λ“€μ–΄, μΌλΆ€ ν•™μƒμ΄ μ²΄μœ‘볡을 λ„λ‚œλ‹Ήν–ˆμŠ΅λ‹ˆλ‹€. λ‹€ν–‰νžˆ μ—¬λ²Œ μ²΄μœ‘볡이 μžˆλŠ” ν•™μƒμ΄ μ΄λ“€μ—κ²Œ μ²΄μœ‘볡을 λΉŒλ €μ£Όλ € ν•©λ‹ˆλ‹€. ν•™μƒλ“€μ˜ λ²ˆν˜ΈλŠ” μ²΄κ²© μˆœμœΌλ‘œ λ§€κ²¨μ Έ μžˆμ–΄, λ°”λ‘œ μ•žλ²ˆν˜Έμ˜ ν•™μƒμ΄λ‚˜ λ°”λ‘œ λ’·λ²ˆν˜Έμ˜ ν•™μƒμ—κ²Œλ§Œ μ²΄μœ‘볡을 λΉŒλ €μ€„ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€. μ˜ˆλ₯Ό λ“€μ–΄, 4번 ν•™μƒμ€ 3번 ν•™μƒμ΄λ‚˜ 5번 ν•™μƒμ—κ²Œλ§Œ μ²΄μœ‘볡을 λΉŒλ €μ€„ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€. μ²΄μœ‘볡이 μ—†μœΌλ©΄ μˆ˜μ—…을 λ“€μ„ μˆ˜ μ—†κΈ° λ•Œλ¬Έμ— μ²΄μœ‘볡을 μ μ ˆνžˆ λΉŒλ € μ΅œλŒ€ν•œ λ§Žμ€ ν•™μƒμ΄ μ²΄μœ‘μˆ˜μ—…μ„ λ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€.

전체 ν•™μƒμ˜ μˆ˜ n, μ²΄μœ‘볡을 λ„λ‚œλ‹Ήν•œ ν•™μƒλ“€μ˜ λ²ˆν˜Έκ°€ λ‹΄κΈ΄ λ°°μ—΄ lost, μ—¬λ²Œμ˜ μ²΄μœ‘볡을 κ°€μ Έμ˜¨ ν•™μƒλ“€μ˜ λ²ˆν˜Έκ°€ λ‹΄κΈ΄ λ°°μ—΄ reserveκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, μ²΄μœ‘μˆ˜μ—…μ„ λ“€μ„ μˆ˜ μžˆλŠ” ν•™μƒμ˜ μ΅œλŒ“값을 return ν•˜λ„둝 solution ν•¨μˆ˜λ₯Ό μž‘μ„±ν•΄μ£Όμ„Έμš”.

 

πŸ“ μ œν•œ 사항

  • 전체 ν•™μƒμ˜ μˆ˜λŠ” 2λͺ… 이상 30λͺ… μ΄ν•˜μž…λ‹ˆλ‹€.
  • μ²΄μœ‘λ³΅μ„ λ„λ‚œλ‹Ήν•œ ν•™μƒμ˜ μˆ˜λŠ” 1λͺ… 이상 nλͺ… μ΄ν•˜μ΄κ³  μ€‘λ³΅λ˜λŠ” λ²ˆν˜ΈλŠ” μ—†μŠ΅λ‹ˆλ‹€.
  • μ—¬λ²Œμ˜ μ²΄μœ‘λ³΅μ„ κ°€μ Έμ˜¨ ν•™μƒμ˜ μˆ˜λŠ” 1λͺ… 이상 nλͺ… μ΄ν•˜μ΄κ³  μ€‘λ³΅λ˜λŠ” λ²ˆν˜ΈλŠ” μ—†μŠ΅λ‹ˆλ‹€.
  • μ—¬λ²Œ 체윑볡이 μžˆλŠ” ν•™μƒλ§Œ λ‹€λ₯Έ ν•™μƒμ—κ²Œ μ²΄μœ‘λ³΅μ„ λΉŒλ €μ€„ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ—¬λ²Œ μ²΄μœ‘λ³΅μ„ κ°€μ Έμ˜¨ 학생이 μ²΄μœ‘λ³΅μ„ λ„λ‚œλ‹Ήν–ˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ 이 학생은 μ²΄μœ‘λ³΅μ„ ν•˜λ‚˜λ§Œ λ„λ‚œλ‹Ήν–ˆλ‹€κ³  κ°€μ •ν•˜λ©°, 남은 체윑볡이 ν•˜λ‚˜μ΄κΈ°μ— λ‹€λ₯Έ ν•™μƒμ—κ²ŒλŠ” μ²΄μœ‘λ³΅μ„ λΉŒλ €μ€„ 수 μ—†μŠ΅λ‹ˆλ‹€.

 

 

πŸ’‘ λ‚˜μ˜ 풀이 

def solution(n, lost, reserve):
    #tempλŠ” n개의 인덱슀λ₯Ό 가지며, λͺ¨λ‘ μ²΄μœ‘λ³΅μ„ ν•œ κ°œμ”© κ°€μ Έμ™”λ‹€κ³  κ°€μ •. 
    temp = []
    i = 0
    while i < n :
        temp.append(1)
        i += 1
        
    #μ²΄μœ‘λ³΅μ„ μžƒμ–΄λ²„λ¦° 학생듀은 -1
    for l in lost: 
        temp[l-1] = temp[l-1] -1
    

    #μ²΄μœ‘λ³΅μ„ μ—¬λ²Œλ‘œ κ°€μ Έμ˜¨ 학생듀 +1
    for r in reserve: 
        temp[r-1] = temp[r-1] + 1
    
    cnt = 0 #체윑 μˆ˜μ—…μ— μ°Έμ—¬ν•˜λŠ” 학생 수
   
    for i in range (0,n-1):
        
        if (temp[i] == 0) and (temp[i+1]==2):
            temp[i] += 1
            temp[i+1] -=1
    
        elif (temp[i] == 2) and (temp[i+1]==0):
            temp[i] -= 1
            temp[i+1] +=1
        
    for i in range(0,n):
        if temp[i] >= 1 or temp[i] >=2 :
            cnt+=1
            
            
    return cnt

 

λ‹€ ν’€κ³ λ‚˜λ‹ˆ μ—„μ²­ λΏŒλ“―ν•˜λ„€

test case12μ—μ„œ κ±Έλ ΈλŠ”λ°, 

파이썬 λ°°μ—΄μ˜ 음수 μΈλ±μŠ€λŠ” 끝의 μˆ«μžλ“€μ„ κ°€μ Έμ˜€λŠ” 것을 κΉœλΉ‘ν–ˆκΈ° λ•Œλ¬Έ. 

 

πŸ‘‰πŸ» 문제 λ°”λ‘œκ°€κΈ°