공부하는 블로그

Baekjoon | Q.2869 - 달팽이는 올라가고 싶다 본문

알고리즘 공부

Baekjoon | Q.2869 - 달팽이는 올라가고 싶다

치킨닮은닭 2019. 12. 27. 00:33
 

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

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

www.acmicpc.net

 달팽이가 나무를 오르는데 얼마나 걸리는지 구하는 문제이다. 

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		int b = sc.nextInt();
		int v = sc.nextInt();
		
		int updownV = v - a;
		int oneDay = a - b;
		int totalDays = 0;
		
		if(updownV <= 0) {
			totalDays = 1;
		}else {
			if(updownV % oneDay == 0) {
				totalDays = updownV / oneDay + 1;
			}else {
				totalDays = updownV / oneDay + 2;
			}
		}
		
		System.out.println(totalDays);

	}

}

 

 처음 풀이는 조건문을 이용하여 해결했다. 

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		int b = sc.nextInt();
		int v = sc.nextInt();
		
		int totalDays = 0;
		int now = 0;
		
		while(now < v) {
			totalDays++;
			now += a;
			if(now >= v) break;
			now -=b;
		}
		
		System.out.println(totalDays);

	}

}

 

 인터넷에 다른 풀이를 보니 반복문을 이용한 경우도 있어 다시 한번 풀어봤다. 근데 시간초과가 발생하는데 왜그러는지를 해결하지 못했다.... 왜그러는걸까....ㅜㅜ

Comments