e_yejun
Jun_ : Pwn
e_yejun
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (240)
    • Profile (1)
    • Pwnable (54)
    • Reversing (14)
    • Network (7)
    • Forensic (10)
    • Embedded (4)
    • Android (2)
    • Web (18)
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (42)
    • ํ”„๋กœ๊ทธ๋ž˜๋ฐ (24)
    • ํ”„๋กœ์ ํŠธ (6)
    • 1-day (7)
    • CTF (15)
    • ๊ธฐํƒ€ (33)
    • ์ผ๊ธฐ์žฅ (0)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Heap
  • dvwa
  • wargame
  • x64
  • X86
  • 1-day
  • dreamhack.io
  • rev-basic
  • how2heap
  • BOF

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
e_yejun

Jun_ : Pwn

์•Œ๊ณ ๋ฆฌ์ฆ˜

[Programmers/Python] [PCCP ๊ธฐ์ถœ๋ฌธ์ œ] 1๋ฒˆ / ๋ถ•๋Œ€ ๊ฐ๊ธฐ

2024. 12. 19. 02:56

๐Ÿ“ ๋ฌธ์ œ ์„ค๋ช…

์–ด๋–ค ๊ฒŒ์ž„์—๋Š” ๋ถ•๋Œ€ ๊ฐ๊ธฐ๋ผ๋Š” ๊ธฐ์ˆ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋ถ•๋Œ€ ๊ฐ๊ธฐ๋Š” t์ดˆ ๋™์•ˆ ๋ถ•๋Œ€๋ฅผ ๊ฐ์œผ๋ฉด์„œ 1์ดˆ๋งˆ๋‹ค x๋งŒํผ์˜ ์ฒด๋ ฅ์„ ํšŒ๋ณตํ•ฉ๋‹ˆ๋‹ค. t์ดˆ ์—ฐ์†์œผ๋กœ ๋ถ•๋Œ€๋ฅผ ๊ฐ๋Š” ๋ฐ ์„ฑ๊ณตํ•œ๋‹ค๋ฉด y๋งŒํผ์˜ ์ฒด๋ ฅ์„ ์ถ”๊ฐ€๋กœ ํšŒ๋ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ์บ๋ฆญํ„ฐ์—๋Š” ์ตœ๋Œ€ ์ฒด๋ ฅ์ด ์กด์žฌํ•ด ํ˜„์žฌ ์ฒด๋ ฅ์ด ์ตœ๋Œ€ ์ฒด๋ ฅ๋ณด๋‹ค ์ปค์ง€๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ์ˆ ์„ ์“ฐ๋Š” ๋„์ค‘ ๋ชฌ์Šคํ„ฐ์—๊ฒŒ ๊ณต๊ฒฉ์„ ๋‹นํ•˜๋ฉด ๊ธฐ์ˆ ์ด ์ทจ์†Œ๋˜๊ณ , ๊ณต๊ฒฉ์„ ๋‹นํ•˜๋Š” ์ˆœ๊ฐ„์—๋Š” ์ฒด๋ ฅ์„ ํšŒ๋ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ชฌ์Šคํ„ฐ์—๊ฒŒ ๊ณต๊ฒฉ๋‹นํ•ด ๊ธฐ์ˆ ์ด ์ทจ์†Œ๋‹นํ•˜๊ฑฐ๋‚˜ ๊ธฐ์ˆ ์ด ๋๋‚˜๋ฉด ๊ทธ ์ฆ‰์‹œ ๋ถ•๋Œ€ ๊ฐ๊ธฐ๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์—ฐ์† ์„ฑ๊ณต ์‹œ๊ฐ„์ด 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.
๋ชฌ์Šคํ„ฐ์˜ ๊ณต๊ฒฉ์„ ๋ฐ›์œผ๋ฉด ์ •ํ•ด์ง„ ํ”ผํ•ด๋Ÿ‰๋งŒํผ ํ˜„์žฌ ์ฒด๋ ฅ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ์ด๋•Œ, ํ˜„์žฌ ์ฒด๋ ฅ์ด 0 ์ดํ•˜๊ฐ€ ๋˜๋ฉด ์บ๋ฆญํ„ฐ๊ฐ€ ์ฃฝ์œผ๋ฉฐ ๋” ์ด์ƒ ์ฒด๋ ฅ์„ ํšŒ๋ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋‹น์‹ ์€ ๋ถ•๋Œ€๊ฐ๊ธฐ ๊ธฐ์ˆ ์˜ ์ •๋ณด, ์บ๋ฆญํ„ฐ๊ฐ€ ๊ฐ€์ง„ ์ตœ๋Œ€ ์ฒด๋ ฅ๊ณผ ๋ชฌ์Šคํ„ฐ์˜ ๊ณต๊ฒฉ ํŒจํ„ด์ด ์ฃผ์–ด์งˆ ๋•Œ ์บ๋ฆญํ„ฐ๊ฐ€ ๋๊นŒ์ง€ ์ƒ์กดํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
๋ถ•๋Œ€ ๊ฐ๊ธฐ ๊ธฐ์ˆ ์˜ ์‹œ์ „ ์‹œ๊ฐ„, 1์ดˆ๋‹น ํšŒ๋ณต๋Ÿ‰, ์ถ”๊ฐ€ ํšŒ๋ณต๋Ÿ‰์„ ๋‹ด์€ 1์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด bandage์™€ ์ตœ๋Œ€ ์ฒด๋ ฅ์„ ์˜๋ฏธํ•˜๋Š” ์ •์ˆ˜ health, ๋ชฌ์Šคํ„ฐ์˜ ๊ณต๊ฒฉ ์‹œ๊ฐ„๊ณผ ํ”ผํ•ด๋Ÿ‰์„ ๋‹ด์€ 2์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด attacks๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ณต๊ฒฉ์ด ๋๋‚œ ์งํ›„ ๋‚จ์€ ์ฒด๋ ฅ์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ๋งŒ์•ฝ ๋ชฌ์Šคํ„ฐ์˜ ๊ณต๊ฒฉ์„ ๋ฐ›๊ณ  ์บ๋ฆญํ„ฐ์˜ ์ฒด๋ ฅ์ด 0 ์ดํ•˜๊ฐ€ ๋˜์–ด ์ฃฝ๋Š”๋‹ค๋ฉด -1์„ return ํ•ด์ฃผ์„ธ์š”.

 

 

๐Ÿค” ๋ฌธ์ œ ํ’€์ด

attacks ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ๊ณต๊ฒฉ ์‹œ๊ฐ„๊ณผ ํ”ผํ•ด๋Ÿ‰์„ ๊ฐ๊ฐ ๋ฆฌ์ŠคํŠธ๋กœ ์žฌ๊ตฌ์„ฑํ•˜๊ณ , ๋งˆ์ง€๋ง‰ ๊ณต๊ฒฉ ์‹œ๊ฐ„๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

1. ํ˜„์žฌ ์‹œ๊ฐ„์ดˆ(idx)๊ฐ€ ๊ณต๊ฒฉ ์‹œ๊ฐ„์— ํฌํ•จํ•œ๋‹ค๋ฉด ํ•ด๋‹น ํ”ผํ•ด๋Ÿ‰ ๋งŒํผ ์ฒด๋ ฅ์„ ๊ฐ์†Œ์‹œํ‚จ๋‹ค. 

2. ์ฒด๋ ฅ์ด 0์ดํ•˜์ด๋ฉด -1์„ ๋ฆฌํ„ดํ•˜๋ฉฐ, ๊ณต๊ฒฉ์ด ์ˆ˜ํ–‰๋๊ธฐ ๋•Œ๋ฌธ์— ๋ถ•๋Œ€ ์‹œ์ „์‹œ๊ฐ„์„ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. ๋˜ํ•œ ํ•ด๋‹น ์‹œ๊ฐ„์˜ ์ฒด๋ ฅ ํšŒ๋ณต๋„ ์ด๋ค„์ง€์ง€ ์•Š๋Š”๋‹ค.

3. ๊ณต๊ฒฉ ์‹œ๊ฐ„์— ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ดˆ๋‹น ํšŒ๋ณต๋Ÿ‰๋งŒํผ ์ฒด๋ ฅ์„ ํšŒ๋ณตํ•˜๊ณ  ์‹œ์ „ ์‹œ๊ฐ„์ด ์ฑ„์›Œ์กŒ๋‹ค๋ฉด ์ถ”๊ฐ€ ํšŒ๋ณต์„ ์ง„ํ–‰ํ•˜๊ณ  0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

4. ํšŒ๋ณต ํ›„ ์ตœ๋Œ€ ์ฒด๋ ฅ์„ ๋„˜์ง€ ์•Š๋„๋ก ์ฒด๋ ฅ์„ ์กฐ์ •ํ•œ๋‹ค.

 

 

๐ŸŒŸ ํ’€์ด ์ฝ”๋“œ 

def init_attack(attacks):
    attack_time = []
    damage = []
    for attack in attacks:
        attack_time.append(attack[0])
        damage.append(attack[1])
        
    return attack_time, damage
    

def solution(bandage, health, attacks):
    max_health = health
    attack_time, damage = init_attack(attacks)
    last_attack_time = attacks[-1][0] + 1
    
    bandage_cnt = 0
    for idx in range(last_attack_time):
        if idx in attack_time:
            health -= damage[attack_time.index(idx)]
            if health <= 0:
                return -1   
                
            bandage_cnt = 0
            continue
            
        health += bandage[1]
        bandage_cnt += 1
        
        if bandage_cnt == bandage[0]:
            health += bandage[2]
            bandage_cnt = 0
            
        health = min(max_health,health)
    
    return health

 

 

 

    '์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Programmers/Python] ํƒ€๊ฒŸ ๋„˜๋ฒ„ - DFS ํ’€์ด
    • [Programmers/Python] ๊ฐœ์ธ์ •๋ณด ์ˆ˜์ง‘ ์œ ํšจ๊ธฐ๊ฐ„
    • [Programmers/Python] [PCCE ๊ธฐ์ถœ๋ฌธ์ œ] 10๋ฒˆ / ๊ณต์›
    • [Programmers/Python] [PCCE ๊ธฐ์ถœ๋ฌธ์ œ] 9๋ฒˆ / ์ง€ํ ์ ‘๊ธฐ
    e_yejun
    e_yejun
    ์ •๋ฆฌ๋…ธํŠธ •_•

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”