-
[백준 2869번] 달팽이는 올라가고 싶다 - Java //Wello Horld//Algorithm/BOJ(Baekjoon Online Judge) 2019. 7. 17. 15:51
이번에는 백준 알고리즘의 2869번 문제 "달팽이는 올라가고 싶다" 를 풀어보도록 하자
일단 문제는 매우 간단하다. 입력으로 낮에 올라가는 거리 A 미터, 밤에 자는 동안 미끄러지는 거리 B 미터, 총 나무막대의 길이 V 미터가 주어진다. 그리고 출력으로 나무막대를 모두 올라가는 데 며칠이 걸리는지 구하면 되는 문제이다.
이 문제를 푸는 데, 유의해야 될 점은 두 가지, 첫째는 입력의 상한값이 1,000,000,000 으로 long으로 받아야 된다는 점과 , 시간제한이다. 0.15초로 엄청 짧은 것을 알 수 있다. 정답 비율을 보니 30%대로 쉽지 않을 것만 같다. Java로 쉽게 풀 수 있을런지 도킷도킷 하다. 일단 문제를 풀어봤다.
import java.io.*; import java.util.*; public class sample { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()); long A = Long.parseLong(st.nextToken()); long B = Long.parseLong(st.nextToken()); long V = Long.parseLong(st.nextToken()); //맨처음에 전체 길이에서 A를 빼주고(하루가 지났다고 생각하고 정답에 1을 더해줌), //빼준 값(V-A)를 하루마다의 이동거리(A-B)로 나눠 주어서 몇일이 걸리는지 구하면 되는데, //나눠준 나머지 값이 0이면 나눈 몫을 더해주고, 그렇지 않으면 나눈 몫에 1을 더해줬다. long ans = 1 + (((V-A)%(A-B) == 0 ? (V-A)/(A-B) : ((V-A)/(A-B)) + 1)); bw.write(ans + "\n"); bw.flush(); br.close(); bw.close(); } }
맞아버렸다.
끝!
2869번: 달팽이는 올라가고 싶다
문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽
www.acmicpc.net
'Algorithm > BOJ(Baekjoon Online Judge)' 카테고리의 다른 글
[백준 - 1107번] 리모컨 - Java //Wello Horld// (0) 2019.07.19 [백준 - 1806번] 부분합 - Java //Wello Horld// (1) 2019.07.17 [백준 - 1946번] 신입사원 - Java //Wello Horld// (0) 2019.07.16 [백준 - 1699번] 제곱수의 합 - Java //Wello Horld// (0) 2019.07.15 [백준 - 1049번] 기타줄 - Java //Wello Horld// (0) 2019.07.12