[JS] 프로그래머스 / 코딩테스트 입문 / [PCCP 기출문제] 1번 / 붕대 감기

2024. 1. 18. 15:29· 코딩 테스트/programmers
목차
  1. 문제
  2. 정답

문제

 

프로그래머스

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

programmers.co.kr

정답

function solution(bandage, health, attacks) {
  const maxHealth = health;
  const totalSeconds = attacks[attacks.length - 1][0];
  const attacksArr = new Array(attacks.length).fill(0);

  attacks.forEach(attack => {
    const seconds = attack[0];
    const damages = attack[1];
    attacksArr[seconds] = damages;
  });

  let SucessSequence = 0;

  // 총 시간 만큼 반복문을 돌린다
  for (let i = 0; i <= totalSeconds; i++) {
    const SuccessSequenceTarget = bandage[0];
    const HealperSeconds = bandage[1];
    const BonusHeal = bandage[2];
    // 공격당하는 경우:
    // 현재 체력에서 피해량 만큼을 깎는다
    // 연속 성공 카운트는 0으로 초기화된다
    // 공격당하지 않는 경우:
    // 현재 체력에서 최대 체력까지만 초당 회복량 만큼을 올린다
    // 연속 성공 카운트가 1 증가된다
    if (attacksArr[i] > 0) {
      health -= attacksArr[i];
      if (health <= 0) {
        break;
      }
      SucessSequence = 0;
    } else {
      // 현재 체력에 초당 회복량을 더한 값이 최대 체력보다 작거나 같은 경우:
      // 현재 체력에 초당 회복량을 더한다
      // 그렇지 않은 경우:
      // 현재 체력을 최대 체력으로 바꾼다
      if (health + HealperSeconds <= maxHealth) {
        health += HealperSeconds;
      } else {
        health = maxHealth;
      }
      if (i > 0) {
        SucessSequence += 1;
      }
    }

    // 연속 성공 카운트가 목표 값에 도달하는 경우:
    // 연속 성공 카운트를 0으로 돌린다
    // 현재 체력에 보너스 체력을 더한 값이 최대 체력보다 작거나 같은 경우:
    // 현재 체력에 보너스 체력을 더한다
    // 그렇지 않은 경우:
    // 현재 체력을 최대 체력으로 바꾼다
    if (SucessSequence === SuccessSequenceTarget) {
      SucessSequence = 0;
      if (health + BonusHeal <= maxHealth) {
        health = health + BonusHeal;
      } else {
        health = maxHealth;
      }
    }

    if (health <= 0) {
      break;
    }
  }

  return health <= 0 ? -1 : health;
}
 
저작자표시 비영리 변경금지 (새창열림)
  1. 문제
  2. 정답
'코딩 테스트/programmers' 카테고리의 다른 글
  • [JS] 프로그래머스 / 코딩테스트 입문 / 다음 큰 숫자
  • [JS] 프로그래머스 / 코딩테스트 입문 / 가장 많이 받은 선물
  • [JS] 프로그래머스 / 코딩테스트 입문 / 신고 결과 받기
  • [JS] 프로그래머스 / 코딩테스트 입문 / 공원 산책
카버
카버
카버
카버의 코딩일기
카버
  • All (414)
    • JavaScript (36)
    • CSS (1)
    • TypeScript (6)
    • React (17)
    • Redux (6)
    • Next.js (13)
    • Gatsby (2)
    • 코딩 테스트 (305)
      • programmers (238)
      • Baekjoon (51)
      • CroCoder (15)
    • ETC (28)
      • Error (9)
      • CS (8)
      • Terminal (2)
      • GitHub (1)
hELLO · Designed By 정상우.v4.2.2
카버
[JS] 프로그래머스 / 코딩테스트 입문 / [PCCP 기출문제] 1번 / 붕대 감기
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.