[파이썬] 불필요한 반복문 생략하기 - [PCCP 기출문제] 1번 / 붕대 감기

개발자와 콩나무·2024년 7월 26일

개발공부

목록 보기
9/14

문제

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
profile
무럭무럭 자라는 개발자와 콩나무 🌱 콩 한 쪽이라도 기록하자! 개발 실력 향상을 위한 백엔드와 머신러닝, 자격증 공부기록

0개의 댓글