미소를뿌리는감자의 코딩
[백준 2024/01/15] 2869번 본문
728x90
https://www.acmicpc.net/problem/2869
2869번: 달팽이는 올라가고 싶다
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
www.acmicpc.net
달팽이는 올라가고 싶다~를 풀어보았다.
1) 접근 방법
A B V 가 차례로 공백으로 구분하여 받는다.
a -> 낮에 이동하는 거리
b-> 뒤로 미끄러지는 거리
v -> 총 이동거리
라고 할 때, (a-b) 는 하루에 이동하는 거리라고 할 수 있다.
하지만, 이것만으로 식을 구성하면 안된다.
왜냐하면, 낮에 a만큼 이동하면서, v에 도달했을 때,
-b를 하면 뒤로 다시 미끄러지기 때문이다.
따라서, 나는 식을 다음과 같이 구성했다.
(a-b)*days + a > v
이로서, a 만큼 이동하는 것을 고려해주어,
도달하게 되면, 날짜 세는 것이 마감되도록 하였다.
days > (v-a)/(a-b)
로 days를 구한 후,
1) days가 정수로 나누어 덜어지게 되면,
+1
2) 그렇지 않은 경우
+2
를 해서 days가 잘 맞춰지도록 했다.
2) 코드
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
public class b2869 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
String[] numbers = line.split("\\s+");
int a = Integer.parseInt(numbers[0]);
int b = Integer.parseInt(numbers[1]);
int v = Integer.parseInt(numbers[2]);
int days;
if ((v-a)%(a-b) == 0){
days = (v-a)/(a-b)+1;
}
else{
days = (v-a)/(a-b)+2;
}
System.out.println(days);
}
}
이번 코드에서 유의 깊게 보고 싶은 부분은,
공백문자를 구분하여 scan하는 방법이다.
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
String[] numbers = line.split("\\s+");
요런식으로 진행이 됨을 알 수 있다.
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준 2024/01/16] 1929번 (0) | 2024.01.16 |
---|---|
[백준 2024/01/16] 10250번 (0) | 2024.01.16 |
[백준 2024/01/15] 4948번 (0) | 2024.01.15 |
[백준 2024/01/15] 2839번 (2) | 2024.01.15 |
[백준 2024/01/15] 2675번 (1) | 2024.01.15 |