처음부터 차근차근

달팽이는 올라가고 싶다 - 문제풀이(수정 중) 본문

알고리즘

달팽이는 올라가고 싶다 - 문제풀이(수정 중)

_soyoung 2022. 10. 23. 21:24
반응형

문제

https://www.acmicpc.net/problem/2869

 

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

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

www.acmicpc.net

예제 입력1 분석

2 // 올라가는 미터 1 // 미끄러지는 미터 5 // 나무의 높이(미터)

 

내 풀이

처음에 이렇게 풀었더니 시간 초과가 났다.

import java.io.*;
import java.util.*;

public class Main
{
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int up = Integer.parseInt(st.nextToken());
		int down = Integer.parseInt(st.nextToken());
		int tree_height = Integer.parseInt(st.nextToken());
		int count = 1;
		int climb = 0;
		
		while (true) {
		    climb += up;
		    if (climb >= tree_height) {
		        break;
		    }
		    climb -= down;
		    count++;
		}
		
		bw.write(String.valueOf(count));
		br.close();
		bw.close();
	}
}

제한 시간이 0.15초인데 while문에서 시간 초과가 난 것 같다.

제한 시간을 맞추려면 반복문을 사용해서는 안된다.

그리고 간과한 부분이 하루는 낮 + 밤이다. 

그렇기 때문에 떨어지는 값도 계산을 해줘야한다.

 

 

반응형

'알고리즘' 카테고리의 다른 글

정수 n개의 합 구하기  (1) 2023.01.26
acm 호텔 문제  (0) 2022.12.25
최소로 거치는 벌집 개수 구하기  (0) 2022.10.22
이친수 구하기 - 동적계획법  (2) 2022.10.14
그리디 알고리즘  (0) 2022.10.13
Comments