코딩/프로그래머스

[프로그래머스/Level1/파이썬][PCCP 기출문제] 1번 붕대감기 코딩테스트

thisisjade 2023. 12. 9. 22:43
728x90

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/250137

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

처음에 문제를 잘못이해해서, attacks의 공격시간이 배열별로 독립이라고 생각해서 어려운 문제라고 생각을 했었습니다.

생각해야할 조건

- 힐과 상대의 공격에 대한 동시성: 같은 시간에는 존재할 수 없다.

- 최대 회복량: 처음에 주어진 체력이 MAX값으로 진행된다.

 

위처럼 조건을 정리하고 문제를 풀었더니 정답코드를 유추할 수 있었습니다.

 

정답

def solution(bandage, health, attacks):
    max_health = health
    health -= attacks[0][1]
    for i in range(1,len(attacks)):
        tmp = attacks[i][0] - attacks[i-1][0]-1
        health = min(max_health,health + (tmp//bandage[0])*bandage[2] + tmp*bandage[1])
        health -= attacks[i][1]
        
        if health <= 0:
            return -1
        
    return health

막상 풀고 다른 사람 풀이보니까 생각보다 짧은 코드로 잘 해결했다는 뿌듯함이 들었습니다 ㅎㅎ..

이 코드에서는 tmp에 -1을 해주는 것이 포인트

728x90