프로그래머스 PCCP 기출문제 1번 붕대감기 링크는 아래에 있다.
↓ ↓ ↓
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
프로그래머스 코딩테스트 문제는 길어 보이지만 설명을 아주아주 친절하게 잘해놓았다.
문제가 이해하기 어렵진 않았지만 1초씩 증가하며 프로그램을 짜기에는 뭔가 더 좋은 방법이 있을 것 같아서 손으로 풀어봤다. 공격을 받을 때마다 한꺼번에 충전된 체력을 더해주고 공격받은 피해량을 빼주면 더 나은 코드가 될 것 같았다.
입출력 첫 번째 예시로 풀이를 해보면 2초와 9초 사이에는 공격이 없으므로 붕대를 감는 중이다.
9초 때는 공격을 받기 때문에 체력을 회복할 수 없으므로 9-2에서 1초를 더 빼준다.
결국 6초 동안 회복할 수 있는 체력은 11(6+5) 점이다.
만약 공격 시간 차이가 11초라면 1초마다 얻는 11점과 5초마다 얻는 10점을 합해서 21점이 된다.
따라서 아래 점화식이 도출된다.
(bandage[1] * diff) + (diff // bandage[0]) * bandage[2]
정답 코드
def solution(bandage, health, attacks):
max_health = health
ptime = 0
for ctime, attack in attacks:
diff = ctime - ptime - 1
health += (bandage[1] * diff) + (diff // bandage[0]) * bandage[2]
if health > max_health:
health = max_health - attack
else:
health -= attack
ptime = ctime
if health < 1:
return -1
else:
return health
문제에 주어진 변수들의 길이가 크지 않아서 1초마다 로직을 짜도 통과는 하겠지만 점화식을 세우는 것도 괜찮은 방법 같았다.
'코딩테스트 준비 > 문제풀이' 카테고리의 다른 글
[프로그래머스/Python] 거리두기 확인하기 lv2 - 파이썬 풀이 (0) | 2025.03.06 |
---|---|
[프로그래머스/Python] PCCP 기출문제 3번 충돌위험 찾기 풀이 (0) | 2025.02.24 |
[프로그래머스/파이썬] PCCP 기출문제 2번 퍼즐 게임 챌린지 - 이분탐색 (0) | 2025.02.23 |
[프로그래머스/Python] PCCP 기출문제 1번 동영상 재생기 - 파이썬 (0) | 2025.02.22 |
[백준] 11404번 플로이드 워셜 알고리즘 설명 - 파이썬 with python (0) | 2025.02.20 |