https://www.acmicpc.net/problem/2869
2869번: 달팽이는 올라가고 싶다
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
www.acmicpc.net
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
첫 번째 시도
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] a = br.readLine().split(" ");
int up = Integer.parseInt(a[0]);
int down = Integer.parseInt(a[1]);
int h = Integer.parseInt(a[2]);
if (h == up) {
System.out.println(1);
} else if ((h - up) / (up - down) == 0) {
System.out.println((h - up) / (up - down) + 2);
} else if ((h - up) % (up - down) < up) {
System.out.println((h - up) / (up - down) + 1);
} else if ((h - up) % (up - down) > up) {
System.out.println((h - up) / (up - down) + 2);
}
}
}
위의 코드를 실행했을 때 시간초과 발생
두 번째 시도
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] a = br.readLine().split(" ");
int up = Integer.parseInt(a[0]);
int down = Integer.parseInt(a[1]);
int h = Integer.parseInt(a[2]);
int result = (h - down) / (up - down);
if ((h - down) % (up - down) != 0) {
result += 1;
System.out.println(result);
} else
System.out.println(result);
}
}
해결 방법
처음엔 for문으로 문제를 풀었는데, 시간초과로 틀렸다. 문제에서 요구하는 것은 for문을 쓰지 않고 계산인 것 같다. 코드를 수정해서 조건문에 접근할 때 (h-up)/(up-down) h:높이,up:올라가는 높이,down:내려가는 높이로 접근했는데, 참고한 코드를 보면 (h-down)/(up-down)로 접근한 것을 볼 수 있다. (h-down)/(up-down)의 연산 결과에 나머지가 0이면 그냥 값을 출력하고, 아니라면 1을 더해서 출력했다.
반응형
'알고리즘 문제 풀이 (Problem Solving)' 카테고리의 다른 글
[Problem Solving/Java] 백준 2839번 - 설탕 배달 (2) | 2024.01.05 |
---|---|
[Problem Solving/Java] 백준 2775번 - 부녀회장이 될테야 (0) | 2024.01.05 |
[Problem Solving/Java] 백준 1193번 - 분수찾기 (0) | 2024.01.02 |
[Problem Solving/Java] 백준 2292번 - 벌집 (1) | 2024.01.02 |
[Problem Solving/Java] 백준 1002번 - 터렛 (1) | 2024.01.02 |