Algorithm/Implement

20546๋ฒˆ / ๊ธฐ์ ์˜ ๋งค๋งค๋ฒ•

์ •ํ˜ธ๋‚˜ 2024. 12. 27. 22:54

๐Ÿ“• ๋ฌธ์ œ

 

https://www.acmicpc.net/problem/20546

 

 

๐Ÿ“„ ํ’€์ด

 

1. 1์›” 14์ผ์˜ ์ž์‚ฐ์€ (ํ˜„๊ธˆ + 1์›” 14์ผ์˜ ์ฃผ๊ฐ€ × ์ฃผ์‹ ์ˆ˜)๋กœ ๊ณ„์‚ฐ

-> ์ค€ํ˜„, ์„ฑ๋ฏผ์ด์˜ ์ž”์—ฌ ํ˜„๊ธˆ, ์ฃผ์‹ ์ˆ˜ ๋ณ€์ˆ˜ ๊ฐ๊ฐ ํ•„์š”

->  1์›” 14์ผ์˜ ์ฃผ๊ฐ€:  stock[-1] ๋กœ ๊ตฌํ˜„

 

 

 

๐Ÿ’ป ๋‚ด ์ฝ”๋“œ

 

n = int(input())
stock = list(map(int, input().split()))

last = len(stock)
jun = 0
seong = 0

for i in range(last):
    # q๋Š” ์ฃผ์‹ ์ˆ˜
    q = n // stock[i] 
  
    if q > 0 :
        # ์ค€ํ˜„ ์ฃผ์‹ ์Šคํƒ€์ผ
        n -= q * stock[i] 
        jun = n + q * stock[last-1]
        
    # ์„ฑ๋ฏผ ์ฃผ์‹ ์Šคํƒ€์ผ
        if stock[i] > stock[i+1] and stock[i+1] > stock[i+2]:
            
            n -= q * stock[i+2] 
            seong = n + q * stock[i+2]
        elif stock[i] < stock[i+1] and stock[i+1] < stock[i+2]:
            n += q * stock[i+2] 
            seong = n + q * stock[i+2]
    


print(jun)
print(seong)

if jun > seong:
    print("BNP")
elif jun < seong:
    print("TIMING")
elif jun == seong:
    print("SAMESAME")

 

๐Ÿ’ป ๋‹ต์•ˆ

  n = int(input())
stock = list(map(int, input().split()))

# ์ค€ํ˜„๊ณผ ์„ฑ๋ฏผ์˜ ์ดˆ๊ธฐ ํ˜„๊ธˆ ๋ฐ ์ฃผ์‹ ๋ณด์œ  ์ƒํƒœ
# jun_cash: ์ค€ํ˜„์ด  ๋ณด์œ  ํ˜„๊ธˆ
# jun_stock : ์ค€ํ˜„ ๋ณด์œ  ์ฃผ์‹ ๊ฐœ์ˆ˜ 
jun_cash = n
jun_stock = 0

seong_cash = n
seong_stock = 0

# ์ฃผ์‹ ๊ฐ€๊ฒฉ ๋ณ€ํ™” ์ฒ˜๋ฆฌ
for i in range(len(stock)):
    # ์ค€ํ˜„: ๊ฐ€์ง„ ๋ˆ์œผ๋กœ ์ตœ๋Œ€ ์ฃผ์‹ ๊ตฌ๋งค
    if jun_cash >= stock[i]:
        jun_stock += jun_cash // stock[i]
        jun_cash %= stock[i]

    # ์„ฑ๋ฏผ: 3์ผ ์—ฐ์† ์ƒ์Šน/ํ•˜๋ฝ ํ™•์ธ ๋ฐ ๋งค๋งค
    if i >= 3:
        # 3์ผ ์—ฐ์† ํ•˜๋ฝ -> ์ „๋Ÿ‰ ๋งค์ˆ˜
        if stock[i - 3] > stock[i - 2] > stock[i - 1] > stock[i]:
            seong_stock += seong_cash // stock[i]
            seong_cash %= stock[i]
        # 3์ผ ์—ฐ์† ์ƒ์Šน -> ์ „๋Ÿ‰ ๋งค๋„
        elif stock[i - 3] < stock[i - 2] < stock[i - 1] < stock[i]:
            seong_cash += seong_stock * stock[i]
            seong_stock = 0

# ๋งˆ์ง€๋ง‰ ๋‚  ์ž์‚ฐ ๊ณ„์‚ฐ
jun_total = jun_cash + jun_stock * stock[-1]
seong_total = seong_cash + seong_stock * stock[-1]

# ๊ฒฐ๊ณผ ์ถœ๋ ฅ


if jun_total > seong_total:
    print("BNP")
elif jun_total < seong_total:
    print("TIMING")
else:
    print("SAMESAME")

 

๐Ÿ“ ์ฐธ๊ณ ์ž๋ฃŒ

 

โ˜บ๏ธ ์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ง€์‹

 

1. 3์ผ ์—ฐ์† ์ƒ์Šน/ ํ•˜๋ฝ ๊ตฌํ˜„ํ•  ๋•Œ

 

์ง€ํ”ผํ‹ฐ์—์„œ ์•„๋ž˜ ์ฒ˜๋Ÿผ ์•Œ๋ ค์คŒ.

๋‹จ์ˆœํ•˜๊ฒŒ ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ๋„ ์žˆ์Œ

 

if i >= 3:
        # 3์ผ ์—ฐ์† ํ•˜๋ฝ -> ์ „๋Ÿ‰ ๋งค์ˆ˜
        if stock[i - 3] > stock[i - 2] > stock[i - 1] > stock[i]:
            seong_stock += seong_cash // stock[i]
            seong_cash %= stock[i]
        # 3์ผ ์—ฐ์† ์ƒ์Šน -> ์ „๋Ÿ‰ ๋งค๋„
        elif stock[i - 3] < stock[i - 2] < stock[i - 1] < stock[i]:
            seong_cash += seong_stock * stock[i]
            seong_stock = 0

 

 

 

๐Ÿ˜‰ ๋ฆฌ๋ทฐ