Notice
Recent Posts
Recent Comments
Link
Dev.baelanche
[백준 16434] 드래곤 앤 던전 본문
반응형
이분탐색으로 풀었다.
1. MAXHP 로 사용할 임의 변수를 둔다.
2. Ti 에 따라 몬스터를 만나면 체력을 깎고 포션이면 체력과 공격력을 증가시킨다.
2-1. 몬스터랑 싸우는 도중 체력이 0이되면 실패하니 주의한다.
2-2. 몬스터의 체력 / 자신의 공격력이 0인지 아닌지에 따라 분기한다.
3. 반복하면서 최소의 MAXHP를 찾는다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int atk = sc.nextInt();
int a[][] = new int[n][3];
for(int i=0; i<n; i++) {
a[i][0] = sc.nextInt();
a[i][1] = sc.nextInt();
a[i][2] = sc.nextInt();
}
long left = 0;
long right = ((long)2 << 62) - 1;
while(left <= right) {
long mid = (left + right)/2;
long satk = atk;
long hp = mid;
boolean alive = true;
for(int i=0; i<n; i++) {
if(a[i][0] == 1) {
if(a[i][2] % satk == 0) hp -= ((a[i][2] / satk) - 1) * a[i][1];
else hp -= (a[i][2] / satk) * a[i][1];
if(hp <= 0) {
alive = false;
break;
}
} else {
hp += a[i][2];
hp = hp > mid ? mid : hp;
satk += a[i][1];
}
}
if(!alive) left = mid + 1;
else right = mid - 1;
}
System.out.println(left);
}
}
반응형
'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글
[백준 1300] K번째 수 (0) | 2019.05.15 |
---|---|
[백준 15732] 도토리 숨기기 (0) | 2019.05.15 |
[백준 2110] 공유기 설치 (0) | 2019.05.15 |
[백준 6236] 용돈 관리 (0) | 2019.05.13 |
[백준 2343] 기타 레슨 (0) | 2019.05.13 |
Comments