728x90
문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/250137
처음에 문제를 잘못이해해서, 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
'코딩 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level0/파이썬][PCCE 기출문제] 1번 출력 코딩테스트 (0) | 2023.12.09 |
---|---|
[프로그래머스] Level1 아픈 동물 찾기 SQL 코딩테스트 연습풀이 (0) | 2022.06.04 |
[프로그래머스] Level1 어린 동물 찾기 SQL 코딩테스트 연습풀이 (0) | 2022.05.06 |
[프로그래머스] Level2 N개의 최소공배수파이썬 풀이 코딩테스트 연습 (0) | 2022.01.08 |
[프로그래머스] Level2 [3차] 파일명 정렬 파이썬 풀이 코딩테스트 연습 2018 카카오 블라인드 (0) | 2021.12.09 |