https://school.programmers.co.kr/learn/courses/30/lessons/250137
프로그래머스의 [PCCP 기출문제] 1번 / 붕대 감기 문제를 풀면서 불필요한 반복문을 생략하며 코드를 개선했다.
if cur_health <= 0:
cur_health = -1
print("죽었습니다")
break
if cur_health <= 0:
print("죽었습니다")
return -1
바로 return 값을 날리면 되는데, break문을 사용하여서 쓸데없이 for문이 여러 번 도는 문제가 있었다.
그래서 해당 부분을 수정하였다.
수정한 부분은 주석 처리하였다.
# 내가 작성한 코드(테스트 케이스 몇 가지 통과 못함)
def solution(bandage, health, attacks):
# 필요한 변수 초기화
max_health = health
cur_health = health
# 연속 성공 시간
suc_time = 0
# 공격이 끝나는 시간
fin_time = attacks[-1][0]
for i in range(fin_time+1):
is_attacked = 0
for attack in attacks:
# 공격을 받았을 때
if i == attack[0]:
suc_time = 0
cur_health -= attack[1]
print("공격을 받았습니다. 현재 체력 : ", cur_health)
is_attacked = 1
if cur_health <= 0:
# cur_health = -1
# print("죽었습니다")
# break
print("죽었습니다")
return -1
if is_attacked == 0:
# 공격 안 받으면 초당 회복량, 연속 성공 시간 ++
suc_time += 1
cur_health += bandage[1]
if cur_health >= max_health:
cur_health = max_health
print("1초 회복", cur_health)
# 연속 성공했을 경우 추가회복량 더하기
if suc_time == bandage[0]:
cur_health += bandage[2]
if cur_health >= max_health:
cur_health = max_health
print("연속 성공했습니다. 추가 회복량 회복", cur_health)
suc_time = 0
answer = cur_health
return answer