2021. 9. 23. 16:33
시간 초과 남
import java.util.Scanner;
public class Main {
static int up = 0;
static int down = 0;
static int now = 0;
static int vertical = 0;
static int days = 0;
public static int moveUp(int now, int up){
now += up;
return now;
}
public static int movedown(int now, int down){
now -= down;
return now;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
now = 0;
up = sc.nextInt();
down = sc.nextInt();
vertical = sc.nextInt();
// 1. 낮 -> 체크
// 2. 체크 > v return 종료
// 2. 체크 < v -> 밤 -> 1
while(true){
//System.out.println("before [ " + " now : " + now + " up : " + up + " down : " + down + " vertical : " + vertical + " ]");
now = moveUp(now, up);
//올라간 후 목표높이보다 더올라가면 종료
if(now >= vertical){
days++;
break;
}
//올라간 후 목표높이보다 낮으면 밤
else{
now = movedown(now, down);
}
//한사이클 돌았으니 날짜 +1
days ++;
//System.out.println("after [ " + " now : " + now + " up : " + up + " down : " + down + " vertical : " + vertical + " ]");
}
System.out.println(days);
}
}
시간제한이 0.25초 라서 공식을 만들어 풀이를 해야 통과가 가능하다고함
첫째날 : 높이(0) + An < h(높이)
둘째날 : 높이(0) + (An - Bn) + An < h(높이)
...n 째 : 높이(0) + (n - 1)(An - Bn) + An < h
일절 반복문 사용은 불가능함
-> 주의 : double 형으로 나누어서 소수점 자리를 잃어버리지 않아야함
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int An = sc.nextInt();
int Bn = sc.nextInt();
int V = sc.nextInt();
System.out.println( (int)Math.ceil((double) (V-An) / (An - Bn)) + 1 );
}
}
'AREA(지속적인 일상) > 02_백준' 카테고리의 다른 글
[백준] - 2480 주사위 세개 (0) | 2023.10.23 |
---|---|
[백준] - 11382 - 꼬마 정민 (1) | 2023.10.23 |
[백준] - 2164 - 카드2 (0) | 2021.09.07 |
[백준] - 10773 - 제로 (0) | 2021.09.07 |
[백준] - 2609 - 최소공배수 , 최대공약수 (0) | 2021.09.06 |