-
[백준 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(); } }
맞아버렸다.
끝!
'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