Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 깃허브
- 변수
- 브랜치
- 좋아요추가
- npm
- CS
- 리액트
- post
- 경로찾기js
- 백준11403번js
- 리팩토링
- API
- 예외처리
- Node.js
- js
- 컴퓨터공학
- gui
- Express
- 백준11403번
- 파이프라인
- 자바스크립트
- 프로그래머스
- 깃
- 데이터베이스
- 과일탕후루js
- 객체
- 타입스크립트
- 웹
- 자바
- 오픈소스
Archives
- Today
- Total
Nevertheless
[JAVA] 붕대 감기 본문
class Solution {
public int solution(int[] bandage, int health, int[][] attacks) {
int answer = health;
int time=attacks.length-1;
int continuity=0; //연속 성공
boolean attacked=false;
for(int i=1;i<=attacks[time][0];i++){
for(int j=0;j<attacks.length;j++){
if(i==attacks[j][0]){ //공격을 받으면
answer-=attacks[j][1];
continuity=0; //연속 성공 시간 0으로 초기화
if(answer<=0){ //체력이 0 이하이면
return -1;
}
attacked=true;
break;
}
}
if(!attacked){ //공격 받지 않았다면
answer+=bandage[1]; //1초당 회복
if(answer>health){ //최대 체력보다 높아지면
answer=health;
}
continuity++; //연속 성공 증가
}
if(continuity==bandage[0]){ //t초만큼 기술 연속 사용 성공하면
answer+=bandage[2]; //추가 체력 증가
if(answer>health){
answer=health;
}
continuity=0;//연속 성공 시간 0으로 초기화
}
attacked=false; //다음 초로 넘어갈 때 공격 받은 여부 변경해줘야함
}
return answer;
}
}
✏️풀이 방법
1. 공격을 당하면
-> 해당 피해량 만큼 체력 감소
( 만약 체력이 0 이하이면 -1을 리턴)
-> 연속 성공 횟수 0으로 초기화
2. 공격을 당하지 않으면
-> 1초당 회복량만큼 체력 증가
( 최대 체력보다 커지면 다시 최대 체력으로 초기화)
-> 연속 성공 횟수 증가
+ t초만큼 기술 연속 사용 성공하면 추가 체력 증가, 연속 성공 횟수 0으로 초기화
✍🏻 느낀점
막상 풀고 나면 어려운 문제가 아니었는데, 분기점을 제대로 생각을 안하고 풀어서 사소한 곳에서
오류가 생기는 느낌이다. 생각만 하고 풀어서 오류가 난 부분을 계속 고치면서 풀 생각을 하지 말고,
애초에 조건을 잘 정리해서 메모해놓고 푸는 연습을 해야겠다.
'알고리즘 > Programmers' 카테고리의 다른 글
[JAVA] 숫자의 표현 (1) | 2024.04.20 |
---|---|
[JAVA] 이진 변환 반복하기 (2) | 2024.04.18 |
[JAVA] JadenCase 문자열 만들기 (3) | 2024.04.18 |
[JAVA] 최솟값 만들기 (1) | 2024.04.17 |
[JAVA] 올바른 괄호 (0) | 2024.04.17 |