https://www.acmicpc.net/problem/2869
2869번: 달팽이는 올라가고 싶다
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
www.acmicpc.net
C
#include <stdio.h>
int main() {
int a, b, v;
int ab = 0; //올라가야할 나머지 길이
int count = 0;
scanf("%d %d %d", &a, &b, &v);
count = (v - b - 1) / (a - b) + 1;
printf("%d", count);
return 0;
}
달팽이가 미끄러지기 전에 정상에 도착하는 경우가 있으니 v-b미터만 올라가면 목표에 달성한다. 따라서 총 v-b미터를 매일 a-b미터씩 올라간다. 만약에 v-b가 a-b로 정확히 나누어 떨어지면 그 몫이 정답. 정확히 나누어 떨어지지 않고 나머지가 남는다면 나머지만큼 다음날 더 올라가야 하므로 몫에 1을 더해야한다. 위의 코드에서는 언제 나누어떨어지는지 구분하지 않고 무조건 -1후에 +1 처리하여 계산한다.
java
package javastd1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class bj2869 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int v = Integer.parseInt(st.nextToken());
int count = (v-b-1) / (a-b) +1;
System.out.println(count);
}
}
자바도 c와 같은 알고리즘으로 해결.
'공부하자 > 알고리즘' 카테고리의 다른 글
[백준] 10757번 큰수 A + B C, java (0) | 2022.01.20 |
---|---|
[백준] 10872번 팩토리얼 C, java (0) | 2022.01.20 |
[백준] 10870번 피보나치 수 5 C, java (0) | 2022.01.19 |
[백준] 1316번 그룹 단어 체커 C (0) | 2022.01.15 |
[백준] 2447번 별 찍기-10 C, java (0) | 2022.01.13 |