문제 풀이에 대한 오류 지적 및 개선 방향 제시는 항상 환영합니다.
알고리즘 문제를 엄청 잘 풀고 막 문제 보자마자 아 이거네 쉽네 ㅎㅎ 이렇게 푸는 입장이 아니라서
그 어떤 문제에 대한 비판 지적 방향제시는 언제나 감사하게 받겠습니다.
이 문제가 올라가는 저장소 : https://github.com/hwk0911/Junit-TDD
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
---|---|---|---|---|---|
0.15 초 (추가 시간 없음) | 128 MB | 38473 | 9195 | 7754 | 27.109% |
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
2 1 5
4
조건
단순한 나눗셈 문제다. 제한시간이 0.15라 반복문으로 풀면 틀리는 문제다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ_2869_달팽이는올라가고싶다 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str;
str = br.readLine().split(" ");
int A = Integer.parseInt(str[0]);
int B = Integer.parseInt(str[1]);
int V = Integer.parseInt(str[2]);
V -= A;
A -= B;
if(V % A == 0){
System.out.println((V / A) + 1);
}
else{
System.out.println((V / A) + 2);
}
}
}
단순 계산으로 문제를 해결할 수 있다. V만큼 도달해야 하고, A만큼 올라가고, B만큼 떨어진다.
도달한 후에는 더이상 떨어지지 않는다 했으니, 우선 V에서 A를 빼줘 마지막 연산을 처리한다.
낮 -> 밤 이 한 싸이클로 계산했을 때, 결과적으로 하루에 올라가는 높이는 A - B 가 된다.
따라서 A에서 B만큼을 빼 하루 올라가는 높이로 설정한다.
V를 A로 나눈 나머지가 0이라면, 마지막날 낮에 올라간 높이로 연산이 가능하고,
아니라면, 하루가 더 소모된다.
따라서 V % A == 0 이라면, V / A + 1을 출력하고,
아니라면, V / A + 2를 출력해서 문제를 해결할 수 있다.
BOJ_Math3_9375_패션 왕 신해빈 (Java) (0) | 2020.02.29 |
---|---|
BOJ_Reculsive Function_10870_피보나치 수 5 (Java) (0) | 2020.02.27 |
BOJ_Stack_4949_균형잡힌 세상 (Java) (0) | 2020.02.23 |
BOJ_Math1_1712_손익분기점 (Java) (0) | 2020.02.21 |
Programmers_Sort_2_가장 큰 수 (Java) (0) | 2020.02.20 |