곽로그

[백준 2869] 달팽이는 올라가고 싶다 본문

알고리즘/백준

[백준 2869] 달팽이는 올라가고 싶다

일도이동 2020. 2. 2. 21:50
반응형

문제

 

 

2869번: 달팽이는 올라가고 싶다

문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽

www.acmicpc.net

 

문제 풀이

 처음에는 "근데 또, 정상에 올라간 후에는 미끄러지지 않는다."라는 조건을 고려하지 않고 하루에 올라가는 높이 (A-B)로 총 높이를 나눴다. 

 

 낮에 올라가 정상에 도달 한 경우를 생각하려면 총길이에서 낮에 올라가는 높이를 뺀 후 (V-A)  이것을 하루에 올라가는 길이로 나눈다 (V-A/A-B). 이 결과를 int로 반환하면 밤+낮으로 올라가는 총 일 수(day)가 나온다. 총 길이에서 하루동안 올라간 총 높이를 빼면 남은 길이가 나오는데, 이 길이가 낮동안 올라갈 수 있는 길이(A)보다 작으면 day+1을 하고, 길면 day+2를 해준다. 

 

코드

package math;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Snail2 {
	public static void main(String[] args) throws IOException {
		 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		 String s = br.readLine();
		 StringTokenizer st = new StringTokenizer(s);
		 
		 int A = Integer.parseInt(st.nextToken());
		 int B = Integer.parseInt(st.nextToken());
		 int V = Integer.parseInt(st.nextToken());
		 
		 int lengthPerDay = A-B;
		 int day = (V-A)/lengthPerDay;
		 
		 int restLength = V -(day*lengthPerDay);
		 if(restLength<=A) {
			 System.out.println(day+1);
		 }
		 else {
			 System.out.println(day+2);
		 }
		 
		 
		 
	}
}
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준 10872]팩토리얼  (0) 2020.02.26
[백준 4949] 균형잡힌 세상  (0) 2020.02.05
[백준 1712] 손익분기점  (0) 2020.02.02
[백준 11866] 요세푸스 문제 0  (0) 2020.01.27
[백준 2164] 카드2  (0) 2020.01.20
Comments