λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Algorithm/λ°±μ€€(BOJ)

[ 파이썬(python) ] λ°±μ€€ 13458 - μ‹œν—˜κ°λ…

by YWTechIT 2021. 4. 14.
728x90

πŸ“Œ λ°±μ€€ 13458 - μ‹œν—˜κ°λ…

문제 μ„€λͺ…


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

λ¬Έμ œκ°€ 생각보닀 μ‰¬μ›Œλ³΄λŠ”λ°?라고 ν–ˆλ‹€κ°€ μ •λ‹΅λ₯ μ΄ μ™œ 25%인지 λŠλ‚Œμ΄ μ™”λ‹€. λ‚˜λŠ” 이쀑 반볡문으둜 μž‘μ„±ν–ˆκ³ , 계산할 λ•Œλ§ˆλ‹€ cntκ°€ 1μ”© μ¦κ°€ν•˜μ—¬ 총 λͺ‡ λͺ…이 ν•„μš”ν• κΉŒ?λ₯Ό κ³„μ‚°ν–ˆλŠ”λ°, μ‹œκ°„ μ΄ˆκ³ΌνŒμ •μ΄ 났닀. πŸ˜‚ πŸ˜‚ μ΄μ€‘λ°˜λ³΅λ¬ΈμœΌλ‘œ ν’€λ €κ³  ν–ˆλ‹€λ©΄ λ‹€λ₯Έ 방법을 μƒκ°ν•΄λ³΄μž.

 

  1. studentλ₯Ό ν•œ λͺ…μ”© κ°€μ Έμ˜¨λ‹€.
  2. λͺ¨λ“  μ‹œν—˜μž₯에 λ“€μ–΄κ°€μ•Ό ν•˜λŠ” 총감독관은 1λͺ…λ§Œ μ‚¬μš©ν•˜κ³  λΆ€ 감독관은 μ—¬λŸ¬ λͺ… μ‚¬μš©ν•΄λ„ λœλ‹€.
  3. λ¨Όμ €, studentμ—μ„œ 총감독관이 κ°μ‹œν•  수 μžˆλŠ” μ‘μ‹œμžμ˜ 수λ₯Ό λͺ¨λ‘ λΊ€λ‹€.
  4. 남은 μ‘μ‹œμžμ˜ μˆ˜μ—μ„œ 뢀감독관이 κ°μ‹œν•  수 μžˆλŠ” μ‘μ‹œμžμ˜ 수둜 λ‚˜λˆˆ λͺ«μ„ μ‚¬μš©ν•œλ‹€.
  5. μ΄λ•Œ, λ‚˜λ¨Έμ§€κ°€ 있으면 λͺ« +1, λ‚˜λ¨Έμ§€κ°€ μ—†μœΌλ©΄ λͺ«μ„ κ·ΈλŒ€λ‘œ μ‚¬μš©ν•œλ‹€.
    • μ—¬κΈ°μ„œ λͺ«μ€ μ‘μ‹œμƒλ“€μ„ κ°μ‹œν•  λ•Œ 뢀감독관이 λͺ‡ λͺ… ν•„μš”ν•œμ§€λ₯Ό κ³„μ‚°ν•˜λŠ” 과정이닀.
    • λ‚˜λ¨Έμ§€κ°€ μžˆμ„ λ•Œ λͺ«μ— 1을 λ”ν•˜λŠ” μ΄μœ λŠ”, 감독해야 ν•˜λŠ” μ‘μ‹œμƒμ΄ λ‚¨μ•˜κΈ° λ•Œλ¬Έμ— λΆ€ κ°λ…κ΄€μ˜ 수λ₯Ό ν•œ λͺ… μΆ”κ°€ν•˜λŠ” 것이닀.
  6. cnt을 λˆ„μ ν•΄μ€€λ‹€.
    • 처음 cntλŠ” N으둜 μ„ μ–Έν–ˆλŠ”λ° μ΄μœ λŠ” 이미 총감독관이 ν•œ λͺ…μ”© λ“€μ–΄κ°”κΈ° λ•Œλ¬Έμ— N의 값을 μ΄ˆκΈ°μ— μ„ μ–Έν•΄μ€€ 것이닀.
728x90

λ‹¨μˆœνžˆ λͺ«κ³Ό λ‚˜λ¨Έμ§€λ₯Ό κ΅¬ν•˜λ©΄ whileλ¬Έ λŒ€μ‹ μ— μ‚¬μš©ν•  수 μžˆλŠ”λ°, μ™œ λ‚΄κ°€ ν’€ 땐 그게 λ– μ˜€λ₯΄μ§€ μ•Šμ§€?!?!? μ•„λ¬΄νŠΌ, λΉ„μŠ·ν•œ μœ ν˜•μ„ λ§Œλ‚˜λ©΄ μ§€κΈˆκ³Ό 같은 λ°©μ‹μœΌλ‘œ 풀도둝 κΈ°μ–΅ν•΄λ³΄μž.

# 곡톡 μ½”λ“œ
import sys
input = sys.stdin.readline

N = int(input())
students = list(map(int, input().split()))
first_commander, second_commander = map(int, input().split())

# λ‚΄ μ½”λ“œ(μ‹œκ°„μ΄ˆκ³Ό)
cnt = 0

for student in students:
    if student - first_commander > 0:
        student -= first_commander
        cnt += 1
        while student > 0:
            student -= second_commander
            cnt += 1
    else:
        while student > 0:
            student -= second_commander
            cnt += 1

print(cnt)

# λ‚΄ λ‘λ²ˆμ§Έ μ½”λ“œ
cnt = N
students = list(map(lambda x: x-first_commander, students)) # 총 감독관이 ν•œλͺ…μ”© λ“€μ–΄κ°€κ³  남은 μ‘μ‹œμƒλ“€μ„ κ³„μ‚°ν•˜λŠ” 식
for student in students:
    if student % second_commander:
        cnt += student // second_commander + 1
    else:
        cnt += student // second_commander
print(cnt)

# λ‹€λ₯Έμ‚¬λžŒμ˜ μ½”λ“œ 
cnt = N

for student in students:
    student -= first_commander
    if student % second_commander:
        cnt += student // second_commander + 1
    else:
        cnt += student // second_commander

print(cnt)
λ°˜μ‘ν˜•

λŒ“κΈ€